使用Ubuntu Terminal通过shell脚本将CSV插入MySQL

时间:2013-04-15 08:51:10

标签: mysql shell ubuntu csv

是否可以使用Ubuntu中的shell脚本将CSV文件插入MySQL?

这是我试过的:

mysql -uroot -proot mysfdb < /home/sf/data.csv

但我收到了错误

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near

以下是CSV文件中的示例内容:

showinventory_SST312V8N4615041313_1366009574txt_,800-200002.A0,00007985

有什么想法吗?

4 个答案:

答案 0 :(得分:7)

Maksym Polshcha的回答是正确的,但只缺少一些东西。显然,由于它是本地文件,我必须在mysql命令中将其声明为本地文件。最后的命令应该是这样的:

 mysql -uroot -proot --local_infile=1 3parsfdb -e "LOAD DATA LOCAL INFILE '/logfiles/Bat_res.csv' INTO TABLE Bat_res FIELDS TERMINATED BY ','"

此外,我确保/logfiles目录和Bat_res.csv具有全球可读性。

谢谢你的答案。

答案 1 :(得分:4)

试试这个:

mysql -uroot -proot mysfdb -e "LOAD DATA INFILE '/home/sf/data.csv' INTO TABLE mytable"

其中 mytable 是您的数据表。如果您的CSV文件中有非标准的字段/行分隔符,请使用 FIELDS TERMINATED BY LINES TERMINATED BY

请参阅http://dev.mysql.com/doc/refman/5.1/en/load-data.html

答案 2 :(得分:1)

我用过它并且有效。

Login in mysql using `mysql -uroot -ppassword --local-infile`

然后在终端:

LOAD DATA LOCAL INFILE '.csv path' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

答案 3 :(得分:0)

打开Ubuntu终端,然后运行以下命令

# mysql -u admin -p --local_infile=1 DATABASE_NAME -e "LOAD DATA LOCAL INFILE 'students.csv' INTO TABLE TABLE_NAME FIELDS TERMINATED BY ',' enclosed by '\"'"

在这里,

  • DATABASE_NAME =您的数据库名称
  • students.csv =您要在数据库中上传的CSV文件目录
  • TABLE_NAME =您要在哪个表中上传数据
  • admin =数据库用户名

运行此命令后,系统会询问管理员用户的密码。

写密码并享受。