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

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

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

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

-Радж

6 ответов


попробуйте эту команду

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

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

для получения дополнительной информации проверьте руководство.

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


вы могли бы сделать

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

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


попробуйте это:

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

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

--ignore-lines=N

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

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


вы можете поставить его следующим образом:

LOAD DATA LOCAL INFILE 'C:/Users/userName/Downloads/tableName.csv' INTO TABLE tableName FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';


вы можете просто импортировать по

mysqlimport --ignore-lines=1 --lines-terminated-by='\n' --fields-terminated-by=',' --fields-enclosed-by='"' --verbose --local -uroot -proot db_name csv_import.csv

Примечание: имя файла Csv и имя таблицы должны быть одинаковыми