MySQL - LOAD DATA LOCAL INFILE shell 脚本不工作

MySQL - LOAD DATA LOCAL INFILE shell script not working

有人可以帮忙吗,我是 mysql 的新手,我注意到“LOAD DATA LOCAL INFILE”在 mysql 事件调度程序中无法从正常的 . .csv

所以我试图在 linux 中设置一个“cron 作业”到 运行 一个 shell 脚本来对我的数据库执行 LOAD DATA INFILE,但我收到错误在下面的shell脚本中,请帮助更正它,请参阅下面我的脚本布局...

#!/bin/bash
mysql -u root -p xxxxxxx testdb --local_infile=1 -e"LOAD DATA LOCAL INFILE '/mnt/mysqldb/mysqldb-new/mysql/CK-BATCH-FTP/Acelity/activity.csv' 
INTO TABLE acelity_activity
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

谢谢你帮助我

您必须将双引号括在 ENCLOSED BY 中,我认为您在原始代码中有一个最终确定的双引号

#!/bin/bash 
mysql -u root -p xxxxxxx testdb --local_infile=1 -e"LOAD DATA LOCAL INFILE '/mnt/mysqldb/mysqldb-new/mysql/CK-BATCH-FTP/Acelity/activity.csv' 
INTO TABLE acelity_activity
FIELDS TERMINATED BY ';'
ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;"

并且您应该在 wokbench 或 phpmyadmin 中测试该命令

感谢@nbk的帮助

所以我稍微修改了上面的脚本,以下对我有用:(我删除了 mysql 语法中的数据库名称并将其添加到查询中)

mysql -u root -pxxxxxxx -e"LOAD DATA LOCAL INFILE '/mnt/mysqldb/mysqldb-new/mysql/CK-BATCH-FTP/File/XXXX.csv' 
INTO TABLE <DB NAME>.<TABLE NAME>
FIELDS TERMINATED BY ';'
ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;"

如果您正在使用 Mysql8 那么这会对您有所帮助。

mysql -udbuser -pXXXXX -h host-pc test1 --local_infile=1 -e "LOAD DATA LOCAL INFILE '/home/abc/data.csv' INTO TABLE tempTable FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n' (col1, col2);";

确保用户名和密码中没有space,即上面命令中提到的那样。

另外ENCLOSED BY只需要写成上述格式即可。