Время выполнения инструкции: до 30 секунд на одного абонента и до 1 минуты инициализацию скрипта, общее время прямо зависит от количества мигрируемых абонентов |
- Пошаговая инструкция по миграции абонентов
- Список полей доступных для миграции абонентов
- Разделы файла конфигурации
- Как мигрировать абоненту персональную стоимость услуги, не как у всех?
- У абонента несколько IP-адресов, как их мигрировать?
- Как мигрировать абоненту доп. соглашения.
- Как мигрировать абоненту комментарий с количеством символов больше 256.
- В биллинге нет полей для миграции нужных данных. Что делать?
- Миграция тарифов и тарифных услуг
- Логи миграции/Скорость миграции
- Как запустить миграцию фоном и отключиться от сервера
- Как сделать csv
- Выгрузка запросом к базе данных
- Из Excel
- Из XML
- Если есть CSV, но формат не совсем подходит (разделитеть, кавычки и тд)
- Ошибки миграции
Пошаговая инструкция по миграции абонентов
CSV и конфигурационный файл должны быть в кодировке UTF-8. Расширение файлов .csv для файла с абонентами и .conf для файла с настройками.
- Допустим csv файл выглядит в нашем случае вот так:
Фильчаков Андрей Петрович;33.1;Белгород;Ленина;3;1;115;89221100331;15J34;Безлимит512;10.0.0.8;AA:BB:CC:DD:11:22;по ip static
Иванов Павел Сидрович;22.5;Москва;Сталина;4;2;8;89991112233;HGJ34;Безлимит1024;192.168.31.5;11:22:33:44:55:66;по vpn pptp, pppoe
Козлов Роман Алексеевич;78.4;Омск;Хрущева;5;3;45;89123336677;B389D;Безлимит5120;172.25.3.7;11:AA:22:BB:33:CC;любая через RADIUSВ табличном виде вот так:
Фильчаков Андрей Петрович 33.1 Белгород Ленина 3 1 115 89221100331 15J34 Безлимит512 10.0.0.8 AA:BB:CC:DD:11:22 по ip static Иванов Павел Сидрович 22.5 Москва Сталина 4 2 8 89991112233 HGJ34 Безлимит1024 192.168.31.5 11:22:33:44:55:66 по vpn pptp, pppoe Козлов Роман Алексеевич 78.4 Омск Хрущева 5 3 45 89123336677 B389D Безлимит5120 172.25.3.7 11:AA:22:BB:33:CC любая через RADIUS - Создаем конфигурацию для вашего 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 }, "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
- Копирование файлов на сервер.
- IP адрес сервера биллинга 10.0.0.1
- Файл конфигурации abonents.conf
- CSV-файл с данными абонентов abonents.csv
- Производим копирование программой scp
scp -P 22 abonents.conf abonents.csv root@10.0.0.1:/app/asr_billing/var/root/
Все файлы должны быть в кодировке utf-8, для проверки введите команду в консоли сервера file /app/asr_billing/var/root/abonents.csv abonents.csv: UTF-8 Unicode text, with CRLF line terminators
Если в выводе Вы получите 'UTF-8 Unicode (with BOM)' выгрузка работать не будет.
Для исправление выполните команду.sed -i '1s/^\xEF\xBB\xBF//' /app/asr_billing/var/root/abonents.csv
- Заходим в контейнер биллнг
chroot /app/asr_billing
- Запускаем скрипт миграции без параметров
python2.7 /usr/lib/python2.7/site-packages/carbon_migration_scripts/file_client/import_csv_v2.pyc
будет выведена инструкция к дальнейшим действиям.
- Запускаем миграцию абонентов командой
python2.7 /usr/lib/python2.7/site-packages/carbon_migration_scripts/file_client/import_csv_v2.pyc /var/root/abonents.conf /var/root/abonents.csv migrate_abonents
Внимание: Первым аргументом обязательно нужно передавать конфигурационный файл, а вторым обязательно файл csv. Если поменять местами аргументы скрипт не заработает. - Проверяем миграцию
Список полей доступных для миграции абонентов
|
Внимательно используйте опцию "Создавать дополнительных пользователей c login=imported_id". Эта опция используется в скрипте с параметром create_users. С этой опцией в новую учетную запись не попадут никакие параметры кроме "Логин" . |
{ "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 } }
Разделы файла конфигурации
- fields - содержит поля доступные для редактирования в карточке абонента, а также у учётной записи пользователя;
- options - отвечает за параметры csv файла, такие как разделитель, дату следующего списания и тому подобное;
- dynamic_attributes содержит список реквизитов, которые не были созданы в биллинге, при этом для каждого абонента будет создан отдельный реквизит.
Как мигрировать абоненту персональную стоимость услуги, не как у всех?
Укажите стоимость услуги в отдельном столбце, в конфигурационном файле в разделе fields укажите поле "Переопределенная абонентская плата".
В услугах абонента персональная стоимость будет указана в поле "Списать сумму/Сделать скидку" в настройках услуги)
Какой именно услуге тарифа будет назначена указанная стоимость?
Биллинг попытается найти у абонента тарифную услугу с ненулевой стоимостью, если она одна - выставляет сумму ей.
|
У абонента несколько IP-адресов, как их мигрировать?
Например, абонента Фильчаков Андрей Петрович три IP-адреса: 10.0.0.8, 10.0.0.9, 10.0.0.10.
В CSV сделайте три строки по этому абоненту, они должны отличаться только IP-адресом.
Фильчаков Андрей Петрович;33.1;Белгород;Ленина;3;1;115;89221100331;15J34;Безлимит512;10.0.0.8;AA:BB:CC:DD:11:22;по ip static Фильчаков Андрей Петрович;33.1;Белгород;Ленина;3;1;115;89221100331;15J34;Безлимит512;10.0.0.9;AA:BB:CC:DD:11:22;по ip static Фильчаков Андрей Петрович;33.1;Белгород;Ленина;3;1;115;89221100331;15J34;Безлимит512;10.0.0.10;AA:BB:CC:DD:11:22;по ip static
Как мигрировать абоненту доп. соглашения.
Для миграции доп. соглашений конкретному абоненту необходимо в конфигурационном файле добавить поле Главный абонент и в этом поле указать номер договора главного абонента.
Если это поле будет пустым - абонент будет создан как отдельный, если поле будет заполнено - биллинг попытается найти абонента по указанному номеру договора и создаст ему доп. соглашение на том же лицевом счете.
Поле Главный абонент должно быть указано в разделе fields.
Поле imported_id у основного абонента и доп. соглашения должны отличаться, иначе скрипт пропустит одну из строчек |
Если необходимо мигрировать каждое доп. соглашение на отдельный лицевой счет - необходимо в разделе options указать следующую опцию:
"Создать доп. соглашения на отдельном счете": "True",
На текущий момент данная возможность есть только в первой версии скрипта миграции
python2.7 /usr/lib/python2.7/site-packages/carbon_migration_scripts/file_client/import_csv.pyc
Как мигрировать абоненту комментарий с количеством символов больше 256.
В реквизитах у абонента есть ограничение на количество символов. Реквизит длиной свыше 256 символов создать нельзя. Однако данную строку можно мигрировать в комментарий, который будет отображаться прямо в карточке абонента. Для этого в конфигурационном файле нужно добавить поле Комментарий абонента
"fields": { "Комментарий абонента": 12 },
В биллинге нет полей для миграции нужных данных. Что делать?
Добавьте нужные данные в выгрузку. В конфигурационном файле укажите их в области "dynamic_attributes". Если каких-то полей нет, биллинг их создаст и отразит в карточке абонента на вкладке реквизиты.
Миграция тарифов и тарифных услуг
Тарифы мигрируются в два этапа:
- Миграция тарифов
- Миграция тарифных услуг
Пошаговая инструкция по миграции тарифов
CSV и конфигурационный файл должны быть в кодировке UTF-8. Расширение файлов .csv для файла с абонентами и .conf для файла с настройками.
- Допустим csv файл выглядит в нашем случае вот так:
0;Льготный для сотрудников;
1;Интернет 10;
2;Интернет 20;
3;Интернет 10+TV;
4;Интернет 20+TV;
5;Интернет 10+телефон;
6;Интернет 20+телефон;В табличном виде вот так:
IMPORTED_ID Название 0 Льготный для сотрудников 1 Интернет 10 2 Интернет 20 3 Интернет 10+TV 4 Интернет 20+TV 5 Интернет 10+телефон 6 Интернет 20+телефон - Создаем конфигурацию для вашего csv файла т.е какие поля из CSV соответствуют полям в бд биллинга. Первое поле в csv считается 0-вым. Далее в конфигурации Вы указываете имя поля в биллинге и значение столбца в csv файле, которое запишется в это поле биллинга
Список полей, доступных для переноса, указан в примере. По дополнительным полям уточните у сотрудников CarbonSoft, который проводит миграцию совместно с вами. Пример конфига для нашего csv файла (описания столбцов не заканчивается запятой, она вызовет ошибку миграции).
{ "fields": { "imported_id": 0, "Название": 1 }, "options": { "Разделитель csv": ";" } }
Обязательно прочтите описание полей ниже imported_id - уникальный идентификатор записей в вашем CSV файле(ах) при миграции. Не может быть пустым!
Название - название тарифа
- Копирование файлов на сервер.
- IP адрес сервера биллинга 10.0.0.1
- Файл конфигурации tariff.csv.cfg
- CSV-файл с данными абонентов tariff.csv
- Производим копирование программой scp
scp -P 22 tariff.csv tariff.csv.cfg root@10.0.0.1:/app/asr_billing/var/root/
Все файлы должны быть в кодировке utf-8, для проверки введите команду в консоли сервера file /app/asr_billing/var/root/tariff.csv tariff.csv: UTF-8 Unicode text, with CRLF line terminators
Если в выводе Вы получите 'UTF-8 Unicode (with BOM)' выгрузка работать не будет.
Для исправление выполните команду.sed -i '1s/^\xEF\xBB\xBF//' /app/asr_billing/var/root/tariff.csv
- Заходим в контейнер биллнг
chroot /app/asr_billing
- Запускаем скрипт миграции без параметров
python2.7 /usr/lib/python2.7/site-packages/carbon_migration_scripts/file_client/import_csv_v2.pyc
будет выведена инструкция к дальнейшим действиям.
- Запускаем миграцию тарифов командой
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
Внимание: Первым аргументом обязательно нужно передавать конфигурационный файл, а вторым обязательно файл csv. Если поменять местами аргументы скрипт не заработает. - Проверяем миграцию
Пошаговая инструкция по миграции тарифных услуг
CSV и конфигурационный файл должны быть в кодировке UTF-8. Расширение файлов .csv для файла с абонентами и .conf для файла с настройками.
- Допустим csv файл выглядит в нашем случае вот так:
Интернет 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;В табличном виде вот так:
Название тарифа Название услуги Цена Скорость Тип Метод списания 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 файле, которое запишется в это поле биллинга
Список полей, доступных для переноса, указан в примере. По дополнительным полям уточните у сотрудников CarbonSoft, который проводит миграцию совместно с вами. Пример конфига для нашего csv файла (описания столбцов не заканчивается запятой, она вызовет ошибку миграции).
{ "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": ";" } }
Обязательно прочтите описание полей ниже Название тарифа - название тарифа, к которому должна быть добавлена услуга
Название - название услуги
Цена - цена услуги
Метод списания - Методы списания
Тип - обязательный параметр, чтобы услуги создались правильно подробное описание типов доступно по ссылке. Если не выбрать тип, услуги будут созданы с типом "Не определено" и интеграция с оборудованием и сервисами будет работать неверно.
Исх. гарант. скорость, Кбит(RATE_OUT) - один из параметров для услуг интернета
Исх. макс. скорость, Кбит(CEIL_OUT) - один из параметров для услуг интернета
Вх. гарант. скорость, Кбит(RATE_IN) - один из параметров для услуг интернета
Вх. макс. скорость, Кбит(CEIL_IN) - один из параметров для услуг интернета
NAS - один из параметров для услуг телевидения
Бесплатно(сек.) - один из парамтеров для услуг телефонии
- Копирование файлов на сервер.
- IP адрес сервера биллинга 10.0.0.1
- Файл конфигурации tariff_usluga.csv.cfg
- CSV-файл с данными абонентов tariff_usluga.csv
- Производим копирование программой scp
scp -P 22 tariff_usluga.csv tariff_usluga.csv.cfg root@10.0.0.1:/app/asr_billing/var/root/
Все файлы должны быть в кодировке utf-8, для проверки введите команду в консоли сервера file /app/asr_billing/var/root/tariff_usluga.csv tariff_usluga.csv: UTF-8 Unicode text, with CRLF line terminators
Если в выводе Вы получите 'UTF-8 Unicode (with BOM)' выгрузка работать не будет.
Для исправление выполните команду.sed -i '1s/^\xEF\xBB\xBF//' /app/asr_billing/var/root/tariff_usluga.csv
- Заходим в контейнер биллнг
chroot /app/asr_billing
- Запускаем скрипт миграции без параметров
python2.7 /usr/lib/python2.7/site-packages/carbon_migration_scripts/file_client/import_csv_v2.pyc
будет выведена инструкция к дальнейшим действиям.
- Запускаем миграцию тарифных услуг командой
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
Внимание: Первым аргументом обязательно нужно передавать конфигурационный файл, а вторым обязательно файл csv. Если поменять местами аргументы скрипт не заработает. - Проверяем миграцию
Логи миграции/Скорость миграции
Оценить скорость прохождения миграции, запущенной с другой машины, можно в логе миграции /var/log/import_csv.log
Как запустить миграцию фоном и отключиться от сервера
Нужно отвязать процесс от терминала, и делается это сразу при запуске. Например:
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
Эта команда:
- Позволит закрыть терминал и отключиться от сервера
- Будет дублировать лог в папку, где Вы выполнили команду.
- В названии лога укажет дату запуска миграции, например: import_csv_v2.2021-04-15_004551.log
Как сделать csv
Выгрузка запросом к базе данных
Уточните структуру базы в документации или у сотрудников биллинга-источника, сформируйте запрос.
Из Excel
Если биллинг-источник позволяет выгрузить данные для миграции в Excel, можно воспользоваться им и пересохранить файл в CSV (меню Файл -> Сохранить как) или воспользоваться конвертером в интернете: https://convertio.co/ru/xls-csv/
Из XML
Можно воспользоваться конвертером в интернете: https://conversiontools.io/conversion/convert_xml_to_csv
Если есть CSV, но формат не совсем подходит (разделитеть, кавычки и тд)
Можно открыть файл с LibreOffice и пересохранить в нужном виде, но иногда он "ломает" даты и большие числа - например, номер банковского счёта из 16 цифр может укоротить, отразив в экспоненциальной форме (например 489089058900e17), и это испортит всю выгрузку.
Для решения, воспользуйтесь утилитой csvformat из пакета csvkit
Установить в Ubuntu 18.04 и выше можно так:
sudo apt update; sudo apt install -y csvkit
Преобразовать так:
csvformat -D '|' -Q '' -U 3 IntercomWorkbenchRaw.csv | sed 's/NULL//g' > IntercomConverted.csv
В качестве разделителя будет использован символ "|", все поля будут выгружены без кавычек, а поля "NULL" станут пустыми (такая проблема может быть в старых версиях MySQL Workbench).
Ошибки миграции
Попытка миграции абонента с тарифом, состоящим из одних цифр
ValueError: Cannot assign "1243": "Abonents.tarif" must be a "Tarif" instance.
Рекомендуем при миграции создавать тарифы хотя бы с одной буквой. Иначе могут возникнуть трудности при миграции.
Пропущен разделитель в конфигурационном файле
В примере пропущен разделитель "," на позиции 42 в конфигурационном файле. Сообщение об ошибке:
ERROR 2019-11-25 14:42:11,717 base 6929 140347412997888 [u'ValueError: Expecting , delimiter: line 42 column 1 (char 1326)', u' File "file_client/import_csv.py", line 1612, in <module>', u' File "file_client/import_csv.py", line 1564, in start_import', u' File "json/__init__.py", line 339, in loads', u' File "json/decoder.py", line 364, in decode', u' File "json/decoder.py", line 380, in raw_decode']
Что бы понять в какой строке нет разделителя просматриваем сообщение об ошибке и находим следующее:
delimiter: line 42
Для исправления конфигурационного файла откройте его в текстовом редакторе и перейдите на строку 42.
vim +42 /var/root/abonents.conf
Нумерация столбцов в .csv файле начинается с 0. |
Конфигурационный файл содержит некорректные параметры
Указанная ошибка появляется, когда программа миграции считывает конфигурационный файл и не может найти в нём параметр.
ERROR 2019-12-11 17:41:59,790 base 18056 140138050590464 [u'ValueError: Expecting property name: line 5 column 1 (char 71)', u' File "file_client/import_csv.py", line 1612, in <module>', u' File "file_client/import_csv.py", line 1564, in start_import', u' File "json/__init__.py", line 339, in loads', u' File "json/decoder.py", line 364, in decode', u' File "json/decoder.py", line 380, in raw_decode'] [u'sudo bash -c "export BOOTUP="noncolor";service worker start 2>&1"']
В указанном случае стояла запятая в конце перечисления параметров конфигурационного файла ("Номер договора": 1,)
"fields": { "Баланс": 6, "Номер договора": 1, },
При перечислении в конфигурационном файле внутри { } используется символ запятая(,), как указатель на следующий параметр |
Неверный тип параметра в конфигурационном файле
Пример ошибки:
ERROR 2019-11-25 19:24:36,818 base 31955 140598127302400 [u'TypeError: list indices must be integers, not unicode', u' File "file_client/import_csv.py", line 1612, in <module>', u' File "file_client/import_csv.py", line 1589, in start_import', u' File "file_client/import_csv.py", line 189, in start_import', u' File "file_client/import_csv.py", line 138, in parse_csv']
Ошибка возникает, когда в конфигурационном файле для параметра указано строковое значение вместо целочисленного. Например вместо номера столбца для тарифа указано его название:
"Тариф": "Основной тариф",
Верное значение поля "Тариф" - номер столбца в файле .csv , с названиями тарифов:
"Тариф": 8,
Ошибка абонент с данным MAC адресом уже существует.
Необходимо проверить чтобы в csv файле в значениях MAC адресов не было равным=0, если есть то сделать значение пустым.