Для початку розповім як взагалі завантажувати в MySQL таблицю дані з CSV файлу створеного в Excel.
Для завантаження даних з CSV використовується команда LOAD DATA INFILE.
Файл який ми будемо завантажувати в Excel виглядає так:
Припустимо у нас на диску 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 форматі за замовчуванням поля розділяються крапкою з комою, відповідно і нам треба вказати крапку з комою в якості роздільника. Для перевірки як у вас ділиться файл відкрийте його в блокноті, (правий клік миші на файлі - відкрити за допомогою - блокнот)
Файл буде виглядати наступним чином:Як видно з скрін поля в нашому файлі розділяються крапкою з комою.
4.IGNORE 1 LINES
Останній рядок вказує поля MySQL таблиці, її потрібно писати в тому випадку якщо в MySQL таблиці ви хочете завантажити дані не в усі стовпці, наприклад якщо в MySQL таблиці у вас є поле ID яке заповнюється через AUTO_INCREMENT автоматично, то вам його завантажувати не треба. Порядок полів повинен бути вказаний строго в тому ж порядку в якому розташовані дані у файлі csv.
По суті все, таким чином ви без проблем завантажте дані з файлу, проблема у вас виникне якщо в вашому файлі міститься російський текст.
Як коректно завантажити дані з csv файлу створеного в Excel в якому міститься російський текст?
Спочатку нам треба зрозуміти причину чому ж російський текст у нас або взагалі не завантажується, або завантажується у вигляді кракозябліков. Вся справа в тому що за замовчуванням csv файл створений в Excel зберігається в кодуванні Windows 1251, а таблиця в MySQL швидше за все у вас в кодуванні UTF8, в зв'язку з цим конфліктом кодувань у вас і виникає проблемма із завантаженням руського тексту.
Найбільш простий спосіб перекодувати створений раніше csv файл скористатися notepad ++, безкоштовну версію цієї програми можна завантажити тут.
Відкрийте свій csv файл в notepad ++. в меню "Кодування" виберіть пункт "Перетворити в UTF8".
Після перекодування в нижньому кутку ви побачите інформацію про те що кодування файлу тепер UTF8.
Далі просто збережіть ці зміни і сміливо можете завантажувати файл за допомогою написаного на початку статті запиту:
LOAD DATA LOCAL INFILE 'D: /rutext.csv'
INTO TABLE `my_table '
FIELDS TERMINATED BY ';'