Миграция из CSV файла

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (9)

просмотр истории страницы
{toc:maxLevel=3}

h2. Пошаговая инструкция по миграции абонентов

CSV и конфигурационный файл должны быть в кодировке UTF-8. Расширение файлов .csv для файла с абонентами и .conf для файла с настройками.
# Создаем конфигурацию для вашего csv файла т.е какие поля из CSV соответствуют полям в бд биллинга. Первое поле в csv считается 0-вым. Далее в конфигурации Вы указываете имя поля в биллинге и значение столбца в csv файле, которое запишется в это поле биллинга
{info}
Список полей, доступных для переноса, указан в примере. По дополнительным полям уточните у специалиста технической поддержки Carbonsoft, сотрудников CarbonSoft, который проводит миграцию совместно с вами.
{info}
Пример конфига для нашего csv файла (описания столбцов не заканчивается запятой, она вызовет ошибку миграции).
# Проверяем миграцию

h3. Логи миграции/Скорость миграции
h3. Список полей доступных для миграции абонентов

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

h3. Разделы файла конфигурации

* *fields* \- содержит поля доступные для редактирования в карточке абонента, а также у учётной записи пользователя;
* *options* \- отвечает за параметры csv файла, такие как разделитель, дату следующего списания и тому подобное;
* *dynamic_attributes* содержит список [реквизитов|Реквизиты], которые не были созданы в биллинге, при этом для каждого абонента будет создан отдельный реквизит.

h3. Как запустить миграцию фоном и отключиться от сервера

Нужно отвязать процесс от терминала, и делается это сразу при запуске. Например:
{code}setsid python2.7 import_csv_v2.pyc IntercomConverted.config.json IntercomConverted.csv migrate_abonents 2>&1 >import_csv_v2.`date +%Y-%m-%d_%H%M%S`.log & disown -a{code}
Эта команда:
* Позволит закрыть терминал и отключиться от сервера
* Будет дублировать лог в папку, где Вы выполнили команду.
* В названии лога укажет дату запуска миграции, например: import_csv_v2.2021-04-15_004551.log

h2. Список полей доступных для миграции абонентов
{info}
* Практически все поля из веб - интерфейса можно мигрировать, указав в конфигурационном файле название поля так же, как оно написано в веб - интерфейсе.
{code}

h3. Разделы файла конфигурации

* *fields* \- содержит поля доступные для редактирования в карточке абонента, а также у учётной записи пользователя;
* *options* \- отвечает за параметры csv файла, такие как разделитель, дату следующего списания и тому подобное;
* *dynamic_attributes* содержит список [реквизитов|Реквизиты], которые не были созданы в биллинге, при этом для каждого абонента будет создан отдельный реквизит.

h3. Как мигрировать абоненту персональную стоимость услуги, не как у всех?

Добавьте нужные данные в выгрузку. В конфигурационном файле укажите их в области "dynamic_attributes". Если каких-то полей нет, биллинг их создаст и отразит в карточке абонента на вкладке [реквизиты|CarbonBilling:Реквизиты].

h2. Миграция тарифов и тарифных услуг

Тарифы мигрируются в два этапа:
* Миграция тарифов
* Миграция тарифных услуг

h3. Пошаговая инструкция по миграции тарифов

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

# Допустим csv файл выглядит в нашем случае вот так: \\ \\
{panel}
0;Льготный для сотрудников;
1;Интернет 10;
2;Интернет 20;
3;Интернет 10+TV;
4;Интернет 20+TV;
5;Интернет 10+телефон;
6;Интернет 20+телефон;
{panel}
В табличном виде вот так:
|| IMPORTED_ID || Название ||
| 0 | Льготный для сотрудников |
| 1 | Интернет 10 |
| 2 | Интернет 20 |
| 3 | Интернет 10+TV |
| 4 | Интернет 20+TV |
| 5 | Интернет 10+телефон |
| 6 | Интернет 20+телефон |
\\
# Создаем конфигурацию для вашего csv файла т.е какие поля из CSV соответствуют полям в бд биллинга. Первое поле в csv считается 0-вым. Далее в конфигурации Вы указываете имя поля в биллинге и значение столбца в csv файле, которое запишется в это поле биллинга
{info}
Список полей, доступных для переноса, указан в примере. По дополнительным полям уточните у сотрудников CarbonSoft, который проводит миграцию совместно с вами.
{info}
Пример конфига для нашего csv файла (описания столбцов не заканчивается запятой, она вызовет ошибку миграции).
{code}
{
"fields": {
"imported_id": 0,
"Название": 1
},
"options": {
"Разделитель csv": ";"
}
}
{code}
{info}
Обязательно прочтите описание полей ниже
{info}
*imported_id* - уникальный идентификатор записей в вашем CSV файле(ах) при миграции. *Не может быть пустым\!*
*Название* - название тарифа \\ \\
# Копирование файлов на сервер.
#* IP адрес сервера биллинга 10.0.0.1
#* Файл конфигурации tariff.csv.cfg
#* CSV-файл с данными абонентов tariff.csv
#* Производим копирование программой scp
{code}
scp -P 22 tariff.csv tariff.csv.cfg root@10.0.0.1:/app/asr_billing/var/root/
{code}
{info}
Все файлы должны быть в кодировке utf-8, для проверки введите команду в консоли сервера
{code} file /app/asr_billing/var/root/tariff.csv
tariff.csv: UTF-8 Unicode text, with CRLF line terminators{code}
Если в выводе Вы получите 'UTF-8 Unicode (with BOM)' выгрузка работать не будет.
Для исправление выполните команду.
{code}sed -i '1s/^\xEF\xBB\xBF//' /app/asr_billing/var/root/tariff.csv{code}
{info}
# Заходим в контейнер биллнг
{code}
chroot /app/asr_billing
{code}
# Запускаем скрипт миграции без параметров
{code}
python2.7 /usr/lib/python2.7/site-packages/carbon_migration_scripts/file_client/import_csv_v2.pyc
{code}
будет выведена инструкция к дальнейшим действиям.
# Запускаем миграцию тарифов командой
{code}
python2.7 /usr/lib/python2.7/site-packages/carbon_migration_scripts/file_client/import_csv_v2.pyc /var/root/tariff.csv.cfg /var/root/tariff.csv migrate_tariff
{code}
{info}
Внимание: Первым аргументом обязательно нужно передавать конфигурационный файл, а вторым обязательно файл csv. Если поменять местами аргументы скрипт не заработает.
{info}
# Проверяем миграцию

h3. Пошаговая инструкция по миграции тарифных услуг


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

# Допустим csv файл выглядит в нашем случае вот так: \\ \\
{panel}
Интернет 10;Услуга Интернет 10;1000;102400;Трафик;Ежемесячно равными долями в день;;;
Интернет 20;Услуга Интернет 20;1000;102400;Трафик;Ежемесячно равными долями в день;;;
Интернет 10+TV;Услуга Интернет 10;1000;102400;Трафик;Ежемесячно равными долями в день;;;
Интернет 10+TV;Услуга ТВ;100;;IP телевидение;Ежемесячно равными долями в день;Smotreshka;;
Интернет 20+TV;Услуга Интернет 20;1000;102400;Трафик;Ежемесячно равными долями в день;;;
Интернет 20+TV;Услуга ТВ;100;;IP телевидение;Ежемесячно равными долями в день;Smotreshka;;
Интернет 10+телефон;Услуга Интернет 10;1000;102400;Трафик;Ежемесячно равными долями в день;;;
Интернет 10+телефон;Услуга Телефония ВЗ;200;;IP телефония;Ежемесячно равными долями в день;;2;
Интернет 20+телефон;Услуга Интернет 20;1000;102400;Трафик;Ежемесячно равными долями в день;;;
Интернет 20+телефон;Услуга Телефония ВЗ;200;;IP телефония;Ежемесячно равными долями в день;;2;
{panel}
В табличном виде вот так:
|| Название тарифа || Название услуги || Цена || Скорость || Тип || Метод списания || NAS || Бесплатно(сек.) ||
| Интернет 10 | Услуга Интернет 10 | 1000 | 102400 | Трафик | Ежемесячно равными долями в день | | |
| Интернет 20 | Услуга Интернет 20 | 1000 | 102400 | Трафик | Ежемесячно равными долями в день | | |
| Интернет 10+TV | Услуга Интернет 10 | 1000 | 102400 | Трафик | Ежемесячно равными долями в день | | |
| Интернет 10+TV | Услуга ТВ | 100 | | IP телевидение | Ежемесячно равными долями в день | Smotreshka | |
| Интернет 20+TV | Услуга Интернет 20 | 1000 | 102400 | Трафик | Ежемесячно равными долями в день | | |
| Интернет 20+TV | Услуга ТВ | 100 | | IP телевидение | Ежемесячно равными долями в день | Smotreshka | |
| Интернет 10+телефон | Услуга Интернет 10 | 1000 | 102400 | Трафик | Ежемесячно равными долями в день | | |
| Интернет 10+телефон | Услуга Телефония ВЗ | 200 | | IP телефония | Ежемесячно равными долями в день | | 2 |
| Интернет 20+телефон | Услуга Интернет 20 | 1000 | 102400 | Трафик | Ежемесячно равными долями в день | | |
| Интернет 20+телефон | Услуга Телефония ВЗ | 200 | | IP телефония | Ежемесячно равными долями в день | | 2 |
\\
# Создаем конфигурацию для вашего csv файла т.е какие поля из CSV соответствуют полям в бд биллинга. Первое поле в csv считается 0-вым. Далее в конфигурации Вы указываете имя поля в биллинге и значение столбца в csv файле, которое запишется в это поле биллинга
{info}
Список полей, доступных для переноса, указан в примере. По дополнительным полям уточните у сотрудников CarbonSoft, который проводит миграцию совместно с вами.
{info}
Пример конфига для нашего csv файла (описания столбцов не заканчивается запятой, она вызовет ошибку миграции).
{code}
{
"fields": {
"Название тарифа": 0,
"Название": 1,
"Исх. гарант. скорость, Кбит(RATE_OUT)": 3,
"Исх. макс. скорость, Кбит(CEIL_OUT), если не поддерживается оборудованием укажите равным RATE_OUT": 3,
"Вх. гарант. скорость, Кбит(RATE_IN)": 3,
"Вх. макс. скорость, Кбит(CEIL_IN), если не поддерживается оборудованием укажите равным RATE_IN": 3,
"Цена": 2,
"Тип": 4,
"Метод списания": 5,
"NAS": 6,
"Бесплатно(сек.)": 7

},
"options": {
"Разделитель csv": ";"
}
}
{code}
{info}
Обязательно прочтите описание полей ниже
{info}
*Название тарифа* - название тарифа, к которому должна быть добавлена услуга
*Название* - название услуги
*Цена* - цена услуги
*Метод списания* - [CarbonBilling:Методы списания]
*Тип* - обязательный параметр, чтобы услуги создались правильно подробное описание типов доступно по [ссылке|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=50660430#Услуги-Вкладка"Основные"]. Если не выбрать тип, услуги будут созданы с типом "Не определено" и интеграция с оборудованием и сервисами будет работать неверно.
*Исх. гарант. скорость, Кбит(RATE_OUT)* - один из параметров для [услуг интернета|CarbonBilling:Услуги. Трафик (интернет)]
*Исх. макс. скорость, Кбит(CEIL_OUT)* - один из параметров для [услуг интернета|CarbonBilling:Услуги. Трафик (интернет)]
*Вх. гарант. скорость, Кбит(RATE_IN)* - один из параметров для [услуг интернета|CarbonBilling:Услуги. Трафик (интернет)]
*Вх. макс. скорость, Кбит(CEIL_IN)* - один из параметров для [услуг интернета|CarbonBilling:Услуги. Трафик (интернет)]
*NAS* - один из параметров для [услуг телевидения|CarbonBilling:Настройка услуг IPTV]
*Бесплатно(сек.)* - один из парамтеров для [услуг телефонии|CarbonBilling:Услуги. IP Телефония]
\\ \\
# Копирование файлов на сервер.
#* IP адрес сервера биллинга 10.0.0.1
#* Файл конфигурации tariff_usluga.csv.cfg
#* CSV-файл с данными абонентов tariff_usluga.csv
#* Производим копирование программой scp
{code}
scp -P 22 tariff_usluga.csv tariff_usluga.csv.cfg root@10.0.0.1:/app/asr_billing/var/root/
{code}
{info}
Все файлы должны быть в кодировке utf-8, для проверки введите команду в консоли сервера
{code} file /app/asr_billing/var/root/tariff_usluga.csv
tariff_usluga.csv: UTF-8 Unicode text, with CRLF line terminators{code}
Если в выводе Вы получите 'UTF-8 Unicode (with BOM)' выгрузка работать не будет.
Для исправление выполните команду.
{code}sed -i '1s/^\xEF\xBB\xBF//' /app/asr_billing/var/root/tariff_usluga.csv{code}
{info}
# Заходим в контейнер биллнг
{code}
chroot /app/asr_billing
{code}
# Запускаем скрипт миграции без параметров
{code}
python2.7 /usr/lib/python2.7/site-packages/carbon_migration_scripts/file_client/import_csv_v2.pyc
{code}
будет выведена инструкция к дальнейшим действиям.
# Запускаем миграцию тарифных услуг командой
{code}
python2.7 /usr/lib/python2.7/site-packages/carbon_migration_scripts/file_client/import_csv_v2.pyc /var/root/tariff_usluga.csv.cfg /var/root/tariff_usluga.csv migrate_tariff_usluga
{code}
{info}
Внимание: Первым аргументом обязательно нужно передавать конфигурационный файл, а вторым обязательно файл csv. Если поменять местами аргументы скрипт не заработает.
{info}
# Проверяем миграцию

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

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

h2. Как запустить миграцию фоном и отключиться от сервера

Нужно отвязать процесс от терминала, и делается это сразу при запуске. Например:
{code}setsid python2.7 import_csv_v2.pyc IntercomConverted.config.json IntercomConverted.csv migrate_abonents 2>&1 >import_csv_v2.`date +%Y-%m-%d_%H%M%S`.log & disown -a{code}
Эта команда:
* Позволит закрыть терминал и отключиться от сервера
* Будет дублировать лог в папку, где Вы выполнили команду.
* В названии лога укажет дату запуска миграции, например: {{import_csv_v2.2021-04-15_004551.log}}

h2. Как сделать csv

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

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

h3. Из Excel
"Тариф": 8,
{code}

h3. Ошибка абонент с данным MAC адресом уже существует.
Необходимо проверить чтобы в csv файле в значениях MAC адресов не было равным=0, если есть то сделать значение пустым.