Как импортировать файл 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

vps
источник
Вы также можете сделать это в мастере импорта 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

Packet Tracer
источник
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

Shyju M
источник
Спасибо :) это решило мою проблему. мы можем изменить имя столбца позже из пользовательского интерфейса (не для экспертов), когда он будет импортирован ...
випул кумават
пробовал много вещей, которые не работали, но это наконец сработало. он работал даже без вмешательства в настройки локальных данных. Я предполагаю, что вместо этого 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»), и вы откроете новое окно. В этом новом окне вы найдете «значок импорта».

Чен
источник