Зміст
Міграція абонбази 2 - "РОЗШИРЕНА"
Починаючи з релізу 1.3.1 доступна так звана “РОЗШИРЕНА” версія модуля "Міграція 2", яка трохи більше, ніж повністю базується на методі імпорту “Ubilling live register”, що в свою чергу зумовлює використання “стандартного режиму реєстрації абонента в Ubilling”, з безпосереднім залученням Stargazer'у до цього процесу(що накладє певні обмеження, про які буде сказано пізніше).
Головною відмінністю цієї “версії” мігрувалки є:
- опціональна можливість “повноцінного заселення” абонів безпосередньо в процесі міграції - тобто так - створення населених пунктів, вулиць, будинків прямо “на льоту”
- можливість додавання повної адреси користувача до User-comments, якщо вибрано режим імпорту даних без створення населених пунктів, вулиць, будинків
- навішування тегів за TagID або TagName
- додавання паспортних даних
- додавання User-comments
- вибір IP-мережі за IP адресою NASу абона(якщо вказано)
- використання значень за замовчуванням для певних полів імпорту, якщо даних для цих полів нема у CSV файлі
- можливість генерації рандомних значень для полів: login, password, MAC address
- можливість пропуску довільної кількості рядків від початку CSV файлу
- неможливість використовувати будь-який інший метод імпорту, окрім “Ubilling live register”
Початок
Структура файлу імпорту
Власне, базується на структурі для "Міграція 2", але, як вже мабуть зрозуміло - є дещо розширеною
Отож, на скріншоті нижче ви можете бачити всі поля даних, які може бути імпортовано. Так, всі-всі, аж до Target network - це поле і все, що нижче за ним - не є полями імпорту.
Тобто створюєте свій CSV файл з даними з вашої БД у будь-який зручний для вас спосіб і “проектуєте” його так, щоб у ньому містилися поля, інформація в яких “задовольнить” максимальну кілкість полів імпорту - таким чином отримуєте максимально можливий профіт від процесу міграції і мінімізуєте “мануальні маніпуляції руками” у подальшому.
Маппінг полів імпорту до полів CSV файлу
Після завантаження CSV файлу ми отримаємо форму з табличкою, в якій будуть дані найпершого рядка і номери, за якими і буде проводитись, власне, маппінг
(вибачайте за вміст файлу на скріні - нічого кращого з великою кількістю полів на момент написання цього мануалу не знайшлося…):
Нижче, під табличкою, побачимо вже знайомі нам випадаючі списки з номерами наших полів(якраз тому дуже рекомендовано щоб у найпершому рядку вашого CSV файлу містилися саме осмислені найменування полів даних - хоча це і необов'язково).
Далі - все просто - вибираєм у випадаючих списках номери полів CSV файлу які містять дані для кожного з полів імпорту. За необхідності(або при відсутності даних для цих полів у вашому CSV файлі) - для більшості полів імпорту можна вказати значення за замовчуванням, які будуть використані для кожного рядка файлу імпорту:
і так - Залишити пустим - теж своєрідне значення “за замовчуванням”(детальних пояснень тут, сподіваємося, не треба?).
IP-мережа
Якщо у випадаючому списку NAS IP address буде вказано номер поля з файлу імпорту - скрипт буде намагатись для даного абонента автоматично визначити мережу у вашому поточному Ubilling інстансі. Працює все доволі просто: беремо IP NAS'у, шукаємо мережу з таким NAS'ом і беремо її ID - все. Якщо нічого не було знайдено - використовуємо мережу вказану у наступному випадаючому списку Target network - тобто списку мереж вашого Ubilling інстансу:
Фінальний контроль
Після завершення проставляння відповідностей між полями імпорту та полями CSV файлу переходимо на форму “фінального контролю”, таку ж як і у “попреденіх міграцій”. Зупинимось на її елементах управління:
Отож, кнопка
- Ні, я хочу спробувати інші налаштування імпорту - поверне вас на самий початок, до вибору CSV файлу
- Yes, proceed registration of this users (no occupancy and tags will be created) - запустить імпорт без створення населених пунктів, вулиць, будинків, а також без створення та асоціювання тегів
- Yes, proceed registration of this users and create occupancy and tags if not exists - запустить імпорт зі створенням населених пунктів, вулиць, будинків, а також тегів та їх асоціювання до абонів
Обмеження
Метод імпорту “Ubilling live register” накладає такі обмеження
- строга вимога до коректності структури файлу імпорту та, власне, імпортованих даних: так, зайві символи-делімітери або “кракозябри” в даних можуть призвести до фатальної помилки в процесі виконання скрипта, яка призведе до зупинки процесу імпорту “десь посеред дороги” і вгадувать потім, які записи було імпортовано, які ні, а які було імпортовано частково і “викусювати” то з CSV файлу - вам доведеться самостійно, витративши чимало часу(це гарантовано на 88.88%)
- неможливість імпортувати всю вашу БД з CSV файлу розміром кілька гіг одразу за раз: так, оскільки імпорт кожного запису займає певний час, то виконання всього скрипта може банально впертися в ліміт max_execution_time, а використання set_time_limit(0), як потенційного лайфхаку, швидше за все банально приведе до HTTP timeout - тому розділяйте свою БД на кілька CSV файлів за якимись ознаками, типу: місто, вулиця, тег, IP-мережа, etc



