Импорт csv в mysql через командную строку
Я пытаюсь импортировать очень большой .csv-файл (~4 ГБ) в mysql. Я рассматривал возможность использования phpmyadmin, но тогда у вас есть максимальный размер загрузки 2 Мб. Кто-то сказал мне, что я должен использовать командную строку.
Я собирался использовать эти направления, чтобы импортировать его: http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html#c5680
Какой будет команда для установки первой строки в поле .csv таблица как имена столбцов в таблице mysql? Эта опция доступна через phpmyadmin, так что их должна быть версия командной строки mysql тоже, верно?. Пожалуйста, помогите мне. Спасибо.
- Raj
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 и имя таблицы должны быть одинаковыми
Comments