Як імпортувати файл CSV у робочий стіл MySQL?


88

У мене є файл CSV. Він містить 1,4 мільйона рядків даних, тому я не можу відкрити цей файл csv в Excel, оскільки його межа становить близько 1 мільйона рядків.

Тому я хочу імпортувати цей файл у робочий стіл MySQL. Цей файл CSV містить такі стовпці

"Service Area Code","Phone Numbers","Preferences","Opstype","Phone Type"

Я намагаюся створити таблицю в робочому середовищі MySQL з назвою "фіктивна", що містить такі стовпці

ServiceAreaCodes,PhoneNumbers,Preferences,Opstyp,PhoneTyp. 

Файл CSV має назву model.csv. Мій код у робочому середовищі такий:

LOAD DATA LOCAL INFILE 'model.csv' INTO TABLE test.dummy FIELDS TERMINATED BY ',' lines terminated by '\n';

але я отримую повідомлення про помилку model.CSV file not found


Ви можете зробити це також у майстрі імпорту dbForge Studio для MySQL . Він автоматично генерує таблицю таким чином prnt.sc/e5iqy1
Devart

Відповіді:


139

Я думаю, вам не вистачає речення ENCLOSED BY

LOAD DATA LOCAL INFILE '/path/to/your/csv/file/model.csv'
INTO TABLE test.dummy FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\n';

І вкажіть повний шлях до файлу csv

Завантажити файл даних - документація MySQL


1
дякую, я не отримую жодної помилки в цій команді. але я отримую помилку типу файлу model.csv не знайдено цей файл зберігається на моєму робочому столі
vps

Файл CSV зберігається на моєму робочому столі системи
vps

5
ОНОВЛЕННЯ: Якщо імпортуються рядки з нестандартними символами, корисно вказати на необхідність "CHARACTER SET utf8" у твердженні: LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE db_name.table_name CHARACTER SET utf8 ПОЛЯ, ЗАКОНЧЕНІ РЯДКАМИ ',' ЗАКРИТИМИ '' 'рядками, закінченими' \ n '; Для цільової таблиці / стовпців також слід встановити utf-8
ılǝ

1
також не слід забувати ключове слово LOCAL, ваш запит в самий раз
Brij Raj Singh - MSFT

2
Працював "свого роду" у Windows 7 за допомогою MySQL Workbench 6.2. Мені довелося скористатися подвійними скісними рисками, '//path//to//your//csv//file//model.csv'і всі поля, що містять одинарні скісні риски, розбилися.
576i

69

Якщо у вас менший набір даних, спосіб досягти цього за допомогою графічного інтерфейсу:

  1. Відкрийте вікно запиту
  2. ВИБРАТИ * ВІД [ім'я_таблиці]
  3. Виберіть Імпортувати з рядка меню
  4. Натисніть Застосувати внизу праворуч під сіткою результатів

введіть тут опис зображення

Довідково: http://www.youtube.com/watch?v=tnhJa_zYNVY


13
Просто ПРИМІТКА. Цей варіант імпорту є лише на машинах Windows. Плагіни, мабуть, все ще працюють на .Net, тому не працюють на Linux або Mac.
BrianC

8
Не забудьте натиснути Застосувати після імпорту.
Steve Pitchers

7
Обережно, це може бути дуже повільно. Це зайняло пару годин, щоб зробити 25000 рядків
Роб Седжвік,

2
Тривалість часу, здається, дуже залежить від апаратного забезпечення. Мій домашній комп’ютер повністю задихався на 10 тисяч рядків. Мій робочий комп’ютер щойно імпортував 243 тис. Рядків із приблизно 200 стовпцями за 85 секунд.
КетіА.

2
@BrianC Здається, це вже не так, для мене це з’являється у версії Linux.
Jammerx2

21

У навігаторі під SCHEMAS клацніть правою кнопкою миші вашу схему / базу даних і виберіть "Майстер імпорту даних таблиці"

Працює і для mac.


Це працювало для мене в Ubuntu 18.04 при створенні нової таблиці з csv. Однак я не зміг додати дані до існуючої таблиці за допомогою цього методу.
LP Whigley

2

Ви можете скористатися майстром імпорту даних таблиці MySQL


Спасибі :) це вирішило мою проблему. ми можемо змінити назву стовпця пізніше з UI (не для експертів), як тільки він буде імпортований ...
vipul kumawat

спробував багато речей, які не працювали, але це нарешті вдалося. він працював навіть не возившись з локальними даними в налаштуваннях файлу. Я припускаю, що MySQL замість цього виконує вставки.
Peppershaker

1

На даний момент неможливо імпортувати CSV (за допомогою MySQL Workbench) на всі платформи, а також не рекомендується, якщо згаданий файл не знаходиться на тому самому хості, що і хост сервера MySQL.

Однак ви можете використовувати mysqlimport .

Приклад:

mysqlimport --local --compress --user=username --password --host=hostname \
--fields-terminated-by=',' Acme sales.part_*

У цьому прикладі mysqlimportдоручено завантажувати всі файли з назвою "sales" із розширенням, що починається з "part_". Це зручний спосіб завантаження всіх файлів, створених у прикладі "split". Використовуйте опцію --compress, щоб мінімізувати мережевий трафік. Параметр --fields-terminated-by = ',' використовується для файлів CSV, а параметр --local визначає, що вхідні дані розташовані на клієнті. Без параметра --local MySQL шукатиме дані на хості бази даних, тому завжди вказуйте параметр --local.

Корисна інформація з цього питання є в документації AWS RDS .


0

Якщо сервер знаходиться на віддаленій машині, переконайтеся, що файл знаходиться на віддаленій машині, а не на вашій локальній машині.

Якщо файл знаходиться на тій самій машині, де знаходиться сервер mysql, переконайтеся, що користувач mysql має дозволи читати / писати файл або скопіювати файл у каталог схеми mysql:

У моєму випадку в ubuntu це було: /var/lib/mysql/db_myschema/myfile.csv

Крім того, не відносно цієї проблеми, але якщо у вас є проблеми з новими рядками, використовуйте sublimeTEXT, щоб змінити закінчення рядків на формат WINDOWS, зберегти файл і повторити спробу.


0

Здається, це трохи хитро, оскільки це справді турбувало мене довгий час.

Вам просто потрібно відкрити таблицю (клацніть правою кнопкою миші «Вибрати рядки - Обмеження 10000»), і ви відкриєте нове вікно. У цьому новому вікні ви знайдете "піктограму імпорту".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.