通过命令行将csv导入mysql

de1*_*7ed 55 mysql csv load-data-infile

我正在尝试将一个非常大的.csv文件(~4gb)导入到mysql中.我正在考虑使用phpmyadmin,但是你的最大上传大小为2mb.有人告诉我,我必须使用命令行.

我打算使用这些说明导入它:http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html#c5680

将.csv表中的第一行设置为mysql表中的列名的命令是什么?这个选项可以通过phpmyadmin获得,所以它们也必须是一个mysql命令行版本,对吗?请帮我.谢谢.

-Raj

Bal*_*ash 124

试试这个命令

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

这里的字段是数据需要放置的实际表字段.封闭的和和终止的行是可选的,如果您的列用双引号括起来可以帮助,例如Excel导出等.

有关详细信息,请查看手册.

要将第一行设置为表列名,只需忽略要读取的行并在命令中添加值.

  • 首先,第1栏,第2栏等等几个问题需要引用它吗?我的问题是他们需要导入大约50多个列名.第一行包含所有数据,所以如果有一些方法让mysql读取第一行,并将它们设置为列名,那将是最好的.一个一个地写出每个名字太繁琐了.谢谢. (2认同)
  • 好的,我需要将 4gb 文件上传到服务器上并尝试一下。感谢帮助! (2认同)

Nie*_*hem 11

你可以做一个

mysqlimport --columns='head -n 1 $yourfile' --ignore-lines=1 dbname $yourfile`
Run Code Online (Sandbox Code Playgroud)

也就是说,如果您的文件以逗号分隔并且不是分号分隔.否则你也可能需要sed通过它.

  • 您的导入文件需要标题,'head -n 1 $ yourfile'返回CSV文件的第一个逗号分隔行.--ignore-lines = 1然后忽略那一行,因为它会尝试将这些插入到您的表中.默认分隔符是tab(\ t),因此还要添加`--fields-terminated-by =','`子句来代替使用逗号分隔符.请阅读http://linux.die.net/man/1/mysqlimport和http://dev.mysql.com/doc/refman/5.7/en/load-data.html (2认同)
  • 这不应该是:`mysqlimport --columns=$(head -n 1 FILE) --ignore-lines=1 dbname FILE 其中文件是数据库文件吗?--columns='head -n 1 $yourfile' 会产生语法错误。此外,您可能需要添加选项 --local,因为默认情况下,许多 mysql 服务器是由 --secure-file-priv 选项配置的。 (2认同)

小智 10

试试这个:

mysql -uusername -ppassword --local-infile scrapping -e "LOAD DATA LOCAL INFILE 'CSVname.csv'  INTO TABLE table_name  FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'"
Run Code Online (Sandbox Code Playgroud)


Bjo*_*ern 6

要使用mysqlimport导入带有标题行的csv,只需添加即可

--ignore-lines=N
Run Code Online (Sandbox Code Playgroud)

(忽略数据文件的前N行)

您链接的页面中描述了此选项.


Ara*_*n K 6

您可以简单地导入

mysqlimport --ignore-lines=1 --lines-terminated-by='\n' --fields-terminated-by=',' --fields-enclosed-by='"' --verbose --local -uroot -proot db_name csv_import.csv
Run Code Online (Sandbox Code Playgroud)

注意:Csv 文件名和表名要一致