SELECT
'external_id',
'full_name',
'first_name',
'middle_name',
'last_name',
'org',
'title',
'description',
'avatar_path',
'source',
'emails',
'phone_numbers',
'phone_description',
'phone_types'
UNION ALL
SELECT
contact.uuid,
contact.contact_name,
contact.first_name,
contact.middle_name,
contact.last_name,
contact.company,
contact.position,
contact.description,
contact.photo,
source.domain,
IFNULL((SELECT GROUP_CONCAT(DISTINCT email.email ORDER BY email.email SEPARATOR ',') FROM email WHERE email.contact_id = contact.id), ''),
IFNULL((SELECT GROUP_CONCAT(DISTINCT phone.digits ORDER BY phone.digits SEPARATOR ',') FROM phone WHERE phone.contact_id = contact.id), ''),
IFNULL((SELECT GROUP_CONCAT(DISTINCT phone.description ORDER BY phone.description SEPARATOR ',') FROM phone WHERE phone.contact_id = contact.id), ''),
IFNULL((SELECT GROUP_CONCAT(DISTINCT label.name ORDER BY label.name SEPARATOR ',') FROM label INNER JOIN phone ON label.id = phone.label_id WHERE phone.contact_id = contact.id), '')
INTO OUTFILE '/var/lib/mysql-files/your_file.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM contact
LEFT JOIN source ON source.id = contact.source_id
GROUP BY contact.id;
|
Название CSV файла не должно содержать кириллические символы и точки. Также файл должен иметь расширение .csv. Чтобы сервис мог увидеть данный файл, необходимо поместить его по следующему пути:
|
Имя файла влияет на источник контакта. Например, для файла с именем valid_format.csv, источник (source) будет указан как csv.valid_format. В имени файла допускаются только латинские буквы и цифры, все остальные символы заменяются на нижнее подчеркивание. |
1. Подключитесь к docker-контейнеру сервиса Address Book:
docker exec -it address-book-stable-server-1 bash |
2. Подключитесь к Erlang node по имени:
./ecss_address_book remote --name ecss_address_book |
3. Выполните команду для запуска миграции LDAP:
EcssAddressBookCore.Actions.CsvImport.import("/home/csv_data/your_file.csv") |
Для базовой проверки полноты миграции можно обратиться напрямую к БД с запросом количества контактов:
EcssAddressBookDb.Actions.Contacts.count(%{})
{:ok, 1337} |
Число после :ok должно совпадать с количеством контактов CSV.
Для выхода из iex нажмите Ctrl+C дважды. Затем введите exit.