Просмотр Исходного

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

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

{panel}
Фильчаков Андрей Петрович;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
{panel}

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

| Фильчаков Андрей Петрович | 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 файле, которое запишется в это поле биллинга
{info}
Список полей, доступных для переноса, указан в примере. По дополнительным полям уточните у специалиста технической поддержки Carbonsoft, который проводит миграцию совместно с вами.
{info}
Пример конфига для нашего csv файла (описания столбцов не заканчивается запятой, она вызовет ошибку миграции).

{code}
{
"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",
"Тип списания":"Предоплата",
"Метод списания":"Ежемесячно равными долями в день"
}
}
{code}
{info}
Обязательно прочтите описание полей ниже
{info}

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

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

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

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

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

*Список типов авторизации:*
{code}
по vpn pptp, pppoe
по ip static
по CarbonAgent
по ip+CarbonAgent
через веб
через ip+веб
любая через RADIUS
{code}

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

{info}
Все файлы должны быть в кодировке utf-8, для проверки введите команду в консоли сервера
{code} file /root/test.csv
/root/test.csv: UTF-8 Unicode text, with CRLF line terminators{code}
Если в выводе Вы получите 'UTF-8 Unicode (with BOM)' выгрузка работать не будет.
Для исправление выполните команду.
{code}sed -i '1s/^\xEF\xBB\xBF//' /root/test.csv{code}
{info}

3. Заходим в контейнер биллнг
{code}
chroot /app/asr_billing
{code}

4. Останавливаем worker.
{code}
/etc/init.d/worker stop
{code}

5. Запускаем скрипт миграции без параметров
{code}
python /usr/lib/python2.7/site-packages/carbon_migration_scripts/file_client/import_csv.pyc
{code}
будет выведена инструкция к дальнейшим действиям.

6. Запускаем worker
{code}
/etc/init.d/worker restart
{code}

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

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

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

h2. Как сделать csv
h3. Выгрузка запросом к базе данных
Уточните в документации или у техподдержки биллинга-источника структуру базы, сформируйте запрос.
h3. Из Excel
Если биллинг-источник позволяет выгрузить данные для миграции в Excel, можно воспользоваться им и пересохранить файл в CSV (меню Файл -> Сохранить как) или воспользоваться конвертером в интернете: [https://convertio.co/ru/xls-csv/]
h3. Из XML
Можно воспользоваться конвертером в интернете: [https://conversiontools.io/conversion/convert_xml_to_csv]