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 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
В табличном виде вот так:
Фильчаков Андрей Петрович | 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. Запускаем скрипт миграции без параметров
python /usr/lib/python2.7/site-packages/carbon_migration_scripts/file_client/import_csv.pyc
будет выведена инструкция к дальнейшим действиям.
5. Проверяем миграцию
Логи миграции/Скорость миграции
Оценить скорость прохождения миграции, запущенной с другой машины, можно в логе миграции /var/log/import_csv.log
Разделы файла конфигурации:
- fields - содержит поля доступные для редактирования в карточке абонента, а также у учётной записи пользователя;
- options - отвечает за параметры csv файла, такие как разделитель, дату следующего списания и тому подобное;
- dynamic_attributes содержит список Реквизитов, которые не были созданы в биллинге, при этом для каждого абонента будет создан отдельный реквизит.
Неполный список полей доступных для миграции абонентов
{ "fields": { "auth_type": 57, "OPT82": 56, "Метод списания абон.платы": 70, "Название/ФИО": 1, "Порог отключения": 2, "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 } }
Внимательно используйте опцию "Создавать дополнительных пользователей c login=imported_id". Эта опция используется в скрипте с параметром create_users. С этой опцией в новую учетную запись не попадут никакие параметры кроме "Логин" . |
Как сделать csv
Выгрузка запросом к базе данных
Уточните в документации или у техподдержки биллинга-источника структуру базы, сформируйте запрос.
Из Excel
Если биллинг-источник позволяет выгрузить данные для миграции в Excel, можно воспользоваться им и пересохранить файл в CSV (меню Файл -> Сохранить как) или воспользоваться конвертером в интернете: https://convertio.co/ru/xls-csv/
Из XML
Можно воспользоваться конвертером в интернете: https://conversiontools.io/conversion/convert_xml_to_csv