Импорт csv в mysql через командную строку

Я пытаюсь импортировать очень большой файл .csv(~ 4gb) в mysql. Я рассматривал возможность использования phpmyadmin, но тогда у вас максимальный размер загрузки 2 МБ. Кто-то сказал мне, что я должен использовать командную строку.

Я собирался использовать эти маршруты для импорта: http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html#c5680

Какова была бы команда установки первой строки в таблице .csv в качестве имен столбцов в таблице mysql? Этот параметр доступен через phpmyadmin, поэтому их тоже должна быть версия командной строки mysql, правильно?. Пожалуйста, помогите мне. Спасибо.

-Raj

Ответ 1

Попробуйте выполнить эту команду

 load data local infile 'file.csv' into table table
 fields terminated by ','
 enclosed by '"'
 lines terminated by '\n'
 (column1, column2, column3,...)

Поля здесь представляют собой фактические поля таблицы, в которых должны находиться данные. Закрытые и завершенные строки являются необязательными и могут помочь, если у вас есть столбцы, заключенные в двойные кавычки, такие как экспорт Excel и т.д.

Подробнее см. руководство.

Для установки первой строки в качестве имен столбца таблицы просто игнорируйте прочитанную строку и добавляйте значения в команде.

Ответ 2

Вы можете сделать

mysqlimport --columns='head -n 1 $yourfile' --ignore-lines=1 dbname $yourfile`

То есть, если ваш файл разделен запятой и не разделяется запятой. Кроме того, вам может понадобиться sed через него.

Ответ 3

попробуйте следующее:

mysql -uusername -ppassword --local-infile scrapping -e "LOAD DATA LOCAL INFILE 'CSVname.csv'  INTO TABLE table_name  FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'"

Ответ 4

Для импорта csv с строкой заголовка с использованием mysqlimport просто добавьте

--ignore-lines=N

(игнорирует первые N строк файла данных)

Эта опция описана на странице, которую вы связали.