Миграция абонентов из CSV файла

Skip to end of metadata
Go to start of metadata
Вы просматриваете старую версию данной страницы. Смотрите текущую версию. Сравнить с текущим  |   просмотр истории страницы

CSV и конфигурационный файл должны быть в кодировке UTF-8. Расширение файлов .csv для файла с абонентами и .conf для файла с настройками.

1. Допустим csv файл выглядит в нашем случае вот так:

Фильчаков Андрей Петрович;33.1;Белгород;Ленина;3;1;115;89221100331;15J34;Безлимит512;10.0.0.8;AA:BB:CC:DD:11:22;IP;3.3.3.3
Иванов Павел Сидрович;22.5;Москва;Сталина;4;2;8;89991112233;HGJ34;Безлимит1024;192.168.31.5;11:22:33:44:55:66;VPN;1.1.1.1
Козлов Роман Алексеевич;78.4;Омск;Хрущева;5;3;45;89123336677;B389D;Безлимит5120;172.25.3.7;11:AA:22:BB:33:CC;IP;2.2.2.2

В табличном виде вот так:

Фильчаков Андрей Петрович 33.1 Белгород Ленина 3 1 115 89221100331 15J34 Безлимит512 10.0.0.8 AA:BB:CC:DD:11:22 по ip static 3.3.3.3
Иванов Павел Сидрович 22.5 Москва Сталина 4 2 8 89991112233 HGJ34 Безлимит1024 192.168.31.5 11:22:33:44:55:66 по vpn pptp, pppoe 1.1.1.1
Козлов Роман Алексеевич 78.4 Омск Хрущева 5 3 45 89123336677 B389D Безлимит5120 172.25.3.7 11:AA:22:BB:33:CC любая через RADIUS 2.2.2.2

2. Создаем конфигурацию для вашего csv файла т.е какие поля из CSV соответствуют полям в бд биллинга. Первое поле в csv считается 0-вым. Далее в конфигурации Вы указываете имя поля в биллинге и значение столбца в csv файле, которое запишется в это поле биллинга

Список полей, доступных для переноса, указан в примере. По дополнительным полям уточните у специалиста технической поддержки Carbonsoft, который проводит миграцию совместно с вами.

Пример конфига для нашего csv файла (описания столбцов не заканчивается запятой, она вызовет ошибку миграции).

{
    "fields": {
        "Название/ФИО": 0,
        "Баланс": 1,
        "Город": 2,
        "Улица": 3,
        "Номер дома": 4,
        "Корпус": 5,
        "Номер квартиры": 6,
        "Логин": 7,
        "imported_id": 7,
        "Номер договора": 7,
        "Номер SMS для оповещений": 7,
        "Сгенерированный пароль": 8,
        "Тариф": 9,
        "IPv4": 10,
        "MAC": 11,
        "Тип авторизации": 12,
        "NAS/BRAS": 13
    },

    "options":{
        "Папка для импорта": "Миграция",
        "Разделитель csv": ";",
        "Формат даты": "%d.%m.%Y",
        "Наследовать параметры от родительской папки": "True",
        "Следующее списание": "16.07.2016",
        "Тип списания":"Предоплата",
        "Метод списания":"Ежемесячно равными долями в день"
    }
}
Обязательно прочтите описание полей ниже

imported_id - уникальный идентификатор записей в вашем CSV файле(ах) при миграции. Не может быть пустым!
Папка для импорта - имя папки в списке абонентов биллинга, в которую попадут все абоненты из csv-файла после миграции. Если требуется разделить абонентов на подпапки (по тарифам или по месту подключения), тогда до миграции необходимо произвести разделение общего csv-файла на отдельные файлы, в которых абоненты уже сгруппированы по нужному признаку. Также для каждого csv-файла нужен будет свой файл .conf, в котором поле "Папка для импорта" будет иметь соответствующее значение.
Названия остальных полей совпадают с их описанием в интерфейсе управления абонентами:

Тариф - имя тарифа в разделе тарификация, который будет присвоен абоненту. Тариф должен быть создан в биллинге до миграции.

NAS/BRAS - к какому маршрутизатору требуется привязать учетную запись - писать текстом в CSV. Просто название NAS'а без IP в скобках. NAS предварительно должен быть создан в биллинге.

Тип авторизации - тип авторизации пользователей (общий для всех добавляемых пользователей)

Следующее списание - Дата, с которой биллинг начнет списывать средства по услугам у абонента. До этой даты абонент будет иметь включенную услугу и пользоваться ей бесплатно, т.е. списания по ним идти до этой даты не будут. Рекомендуется ставить дату миграции.

Список типов авторизации:

по vpn pptp, pppoe
по ip static
по CarbonAgent
по ip+CarbonAgent
через веб
через ip+веб
любая через RADIUS

2. Копируем конфиг и CSV-файл в /app/asr_billing/root/

Все файлы должны быть в кодировке utf-8, для проверки введите команду в консоли сервера
 file /root/test.csv 
/root/test.csv: UTF-8 Unicode text, with CRLF line terminators

Если в выводе Вы получите 'UTF-8 Unicode (with BOM)' выгрузка работать не будет.
Для исправление выполните команду.

sed -i '1s/^\xEF\xBB\xBF//' /root/test.csv

3. Заходим в контейнер биллнг

chroot /app/asr_billing

4. Останавливаем worker.

/etc/init.d/worker stop

5. Запускаем скрипт миграции без параметров

python /usr/lib/python2.7/site-packages/carbon_migration_scripts/file_client/import_csv.pyc

будет выведена инструкция к дальнейшим действиям.

6. Запускаем worker

/etc/init.d/worker restart

7. Проверяем миграцию

Логи миграции/Скорость миграции

Оценить скорость прохождения миграции, запущенной с другой машины, можно в логе миграции /var/log/import_csv.log

Полный список полей доступных для миграции абонентов


{
    "fields": {
        "auth_type": 57, 
        "OPT82": 56, 
        "Метод списания абон.платы": 70, 
        "Название/ФИО": 1, 
        "VLAN": 54, 
        "Номер договора": 3, 
        "Абонентка по тарифу": 71, 
        "Название тарифа": 42, 
        "rate_in": 49, 
        "next_auto_acount": 68, 
        "Добровольная блокировка, до": 21, 
        "Логин": 2, 
        "Номер дома": 35, 
        "Номер квартиры": 37, 
        "Корпус": 36, 
        "iptv пароль": 64, 
        "IP адрес для SNAT": 65, 
        "порт коммутатора": 55, 
        "Улица": 34, 
        "Переход на тариф": 38, 
        "Баланс": 9, 
        "Дерево групп": 67, 
        "IP коммутатора": 53, 
        "Пул IP адресов": 27, 
        "iptv ip": 62, 
        "Номер SMS для оповещений": 11, 
        "imported_id": 0, 
        "У пользователя белый ip адрес": 22, 
        "iptv мак": 63, 
        "Host Пул (только для VPN)": 26, 
        "Юр. лицо": 5, 
        "send_act": 19, 
        "NAS/BRAS": 58, 
        "sync1c": 20, 
        "Дата выставления Акта": 72, 
        "ceil_in": 51, 
        "ceil_out": 52, 
        "Дата договора": 7, 
        "rate_out": 50, 
        "enabled": 6, 
        "Переопределенная абонентская плата": 61, 
        "email": 10, 
        "Следующее списание": 69, 
        "MAC": 8, 
        "Host IP (только для VPN)": 25, 
        "IPv4": 4, 
        "Запретить динамическое выделение параметров": 23, 
        "Формировать Акт автоматически": 12, 
        "Город": 32, 
        "Имя тарифа для перехода": 40, 
        "Дата следующего перехода": 39, 
        "Сгенерированный пароль": 15
    }, 
    "options": {
        "Формат даты": "%Y-%m-%d %H:%M:%S", 
        "Метод списания": "Ежедневно", 
        "Разделитель csv": ";", 
        "Разделитель телефонов": " ", 
        "Создавать дополнительных пользователей c login=imported_id": "True", 
        "Наследовать параметры от родительской папки": "False", 
        "Папка для импорта": "Миграция", 
        "Тип списания": "Предоплата"
    }, 
    "dynamic_attributes": {
        "Главный бухгалтер": 87, 
        "Кем выдан": 83, 
        "Адрес оборудования": 80, 
        "Наименование оборудования": 75, 
        "Адрес": 73, 
        "Когда выдан": 82, 
        "Кто подключил": 77, 
        "Мак адресс": 79, 
        "Наименование": 85, 
        "Прописка": 84, 
        "Паспорт №": 81, 
        "Номер порта": 76, 
        "ИНН": 86, 
        "Когда подключен (дата)": 78, 
        "Телефон": 74
    }
}

Как сделать csv

Выгрузка запросом к базе данных

Уточните в документации или у техподдержки биллинга-источника структуру базы, сформируйте запрос.

Из Excel

Если биллинг-источник позволяет выгрузить данные для миграции в Excel, можно воспользоваться им и пересохранить файл в CSV (меню Файл -> Сохранить как) или воспользоваться конвертером в интернете: https://convertio.co/ru/xls-csv/

Из XML

Можно воспользоваться конвертером в интернете: https://conversiontools.io/conversion/convert_xml_to_csv

Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.