Как импортировать файл 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 for 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" для оператора: ЗАГРУЗИТЬ ЛОКАЛЬНЫЙ ИНФАЙЛ ДАННЫХ '/path/to/file.csv' INTO TABLE db_name.table_name CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '"', оканчивающиеся строками '\ 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
Не забудьте нажать «Применить» после импорта.
— Стив Питчерс

7
Остерегайтесь, это может быть очень медленным. На выполнение 25 000 строк ушло несколько часов
— Роб Седжвик

2
Кажется, что продолжительность очень сильно зависит от оборудования. Мой домашний компьютер полностью захлебнулся 10К строками. Мой рабочий компьютер только что импортировал 243 тыс. Строк с примерно 200 столбцами за 85 секунд.
— Кэти А.

2
@BrianC Похоже, это уже не так, мне кажется, в версии для Linux.
— Jammerx2

21

В навигаторе SCHEMAS щелкните правой кнопкой мыши схему / базу данных и выберите «Мастер импорта табличных данных».

Работает и для Mac.


Это сработало для меня в Ubuntu 18.04 при создании новой таблицы из csv. Однако мне не удалось добавить данные в существующую таблицу с помощью этого метода.
— LP Whigley

2

Вы можете использовать мастер импорта данных таблицы MySQL


Спасибо :) это решило мою проблему. мы можем изменить имя столбца позже из пользовательского интерфейса (не для экспертов), когда он будет импортирован ...
— випул кумават

пробовал много вещей, которые не работали, но это наконец сработало. он работал даже без вмешательства в настройки локальных данных. Я предполагаю, что вместо этого 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_». Это удобный способ загрузить все файлы, созданные в примере с разделением. Используйте параметр --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

Это кажется немного сложным, поскольку меня это действительно беспокоило долгое время.

Вам просто нужно открыть таблицу (щелкните правой кнопкой мыши «Select Rows- Limit 10000»), и вы откроете новое окно. В этом новом окне вы найдете «значок импорта».

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.