是否可以使用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
有什么想法吗?
答案 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
答案 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 '\"'"
在这里,
运行此命令后,系统会询问管理员用户的密码。
写密码并享受。