LOAD INFILE而不是mysqlimport

时间:2016-02-04 18:01:51

标签: mysql bash

我已设法使用mysqlimport设置自动将表格导入我的数据库。

但是,无法查看任何警告的详细信息。相反,我想使用LOAD DATA INFILE,可以添加SHOW WARNINGS

但我无法弄清楚如何在我的bash脚本中使用LOAD DATA INFILE

我就是这样做的mysqlimport

mysqlimport --fields-terminated-by="," --fields-enclosed-by=\" -u dbuser -ppassword databasename /tmp/customers.csv 

此命令将数据导入表'customers'。

但是如何在我的bash文件中使用SHOW WARNINGS的附加功能执行相同的操作?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

-e or --execute optionmysql将接受以分号分隔的一个或多个查询,就像在交互式shell中一样。只需将标准LOAD DATA INFILE查询后跟SHOW WARNINGS

mysql -u dbuser -ppassword -D databasename -e 'LOAD DATA INFILE "/tmp/customers.csv" INTO TABLE foo FIELDS TERMINATED BY "," ENCLOSED BY "\""; SHOW WARNINGS'

或者您也可以在标准输入上传递查询;我发现heredoc syntax更容易阅读,它避免了一个级别的引号。

mysql -u dbuser -ppassword -D databasename <<SQL
LOAD DATA INFILE '/tmp/customers.csv' INTO TABLE foo FIELDS TERMINATED BY ',' ENCLOSED BY '"';
SHOW WARNINGS;
SQL