Mysql - навчання - чтиво

Для початку розповім як взагалі завантажувати в MySQL таблицю дані з CSV файлу створеного в Excel.

Для завантаження даних з CSV використовується команда LOAD DATA INFILE.

Файл який ми будемо завантажувати в Excel виглядає так:

Mysql - навчання - чтиво

Припустимо у нас на диску D на локальному комп'ютері лежить файл rutext.csv створений в Excel. Для завантаження даних з файлу спочатку створіть в MySQL таблицю яка буде містити всі поля які присутні в нашому csv файлі. Далі в MySQL пишемо запит:

LOAD DATA LOCAL INFILE 'D: /rutext.csv'

INTO TABLE `my_table '

FIELDS TERMINATED BY ';'

Розберемо кожен рядок окремо:

1. LOAD DATA LOCAL INFILE 'D: /rutext.csv'

Команда завантаження даних з файлу, оператор LOCAL потрібен у випадках коли ви хочете завантажити дані на віддалений сервер, якщо MySQL сервер з базою в яку ви плануєте завантажити дані встановлений на вашому локальному комп'ютері то оператор LOCAL можна опустити. Після оператора INFILE в одинарних лапках необхідно прописати повний шлях до файлу, папки і аздели поділяються через зворотний слеш.

2.INTO TABLE `my_table '

Вказуємо таблицю в яку ми хочемо завантажити дані, необхідно що б в таблиці присутні всі поля які є в даних знаходяться в csv файл.

3.FIELDS TERMINATED BY ';'

Цей рядок вказує на символ який є роздільником у файлі csv. В excel за замовчуванням при збереженні файлу в csv форматі за замовчуванням поля розділяються крапкою з комою, відповідно і нам треба вказати крапку з комою в якості роздільника. Для перевірки як у вас ділиться файл відкрийте його в блокноті, (правий клік миші на файлі - відкрити за допомогою - блокнот)

Mysql - навчання - чтиво
Файл буде виглядати наступним чином:

Mysql - навчання - чтиво

Як видно з скрін поля в нашому файлі розділяються крапкою з комою.

4.IGNORE 1 LINES

Останній рядок вказує поля MySQL таблиці, її потрібно писати в тому випадку якщо в MySQL таблиці ви хочете завантажити дані не в усі стовпці, наприклад якщо в MySQL таблиці у вас є поле ID яке заповнюється через AUTO_INCREMENT автоматично, то вам його завантажувати не треба. Порядок полів повинен бути вказаний строго в тому ж порядку в якому розташовані дані у файлі csv.

По суті все, таким чином ви без проблем завантажте дані з файлу, проблема у вас виникне якщо в вашому файлі міститься російський текст.

Як коректно завантажити дані з csv файлу створеного в Excel в якому міститься російський текст?

Спочатку нам треба зрозуміти причину чому ж російський текст у нас або взагалі не завантажується, або завантажується у вигляді кракозябліков. Вся справа в тому що за замовчуванням csv файл створений в Excel зберігається в кодуванні Windows 1251, а таблиця в MySQL швидше за все у вас в кодуванні UTF8, в зв'язку з цим конфліктом кодувань у вас і виникає проблемма із завантаженням руського тексту.

Найбільш простий спосіб перекодувати створений раніше csv файл скористатися notepad ++, безкоштовну версію цієї програми можна завантажити тут.

Відкрийте свій csv файл в notepad ++. в меню "Кодування" виберіть пункт "Перетворити в UTF8".

Mysql - навчання - чтиво

Після перекодування в нижньому кутку ви побачите інформацію про те що кодування файлу тепер UTF8.

Mysql - навчання - чтиво

Далі просто збережіть ці зміни і сміливо можете завантажувати файл за допомогою написаного на початку статті запиту:

LOAD DATA LOCAL INFILE 'D: /rutext.csv'

INTO TABLE `my_table '

FIELDS TERMINATED BY ';'

Схожі статті