Dak*_*kar 3 mysql database csv shell ubuntu
我正在编写一个外壳脚本以在mysql中导入一个csv文件,这是我的代码:
DATABASE=*mydatabase*
USER=*myuser*
PASS=*mypassword*
file0="myfile.csv"
if [ -e "$file0" ]
then
mysql --user=${USER} --password=${PASS} --database= ${DATABASE} --local-infile=1 < myquery.sql
else
echo "$file0 does not exist"
fi
Run Code Online (Sandbox Code Playgroud)
要执行的查询在其中myquery.sql,这是其内容:
LOAD DATA LOCAL INFILE 'myfile.csv' replace INTO TABLE imported_table
FIELDS TERMINATED BY ';'
ENCLOSED BY ''
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(Field1, Field2, Field3, Field4, Field5);
Run Code Online (Sandbox Code Playgroud)
这段代码可以正常工作,但是如何检查查询是否已执行?我的目标是导入成功后删除文件,或者在出现错误的情况下写入自定义日志文件。有什么建议吗?
每当您使用mysql(或Unix中的任何其他命令)运行命令时,都会得到一个返回代码,您可以使用进行检查$?。如果成功,它将成功0。否则,它将是一个不同的数字。
因此,您可以执行以下操作:
mysql --user=${USER} --password=${PASS} --database= ${DATABASE} --local-infile=1 < myquery.sql
if [ $? -eq 0 ]; then
# remove file
else
# write to log
fi
Run Code Online (Sandbox Code Playgroud)
$ mysql -u me -pXXXX -e "SELECT COUNT(*) FROM YYY.ZZZ;"
+----------+
| COUNT(*) |
+----------+
| 123 |
+----------+
$ echo $?
0
$ mysql -u meASDFASFASD -pXXXX -e "SELECT COUNT(*) FROM YYY.ZZZ;"
ERROR 1045 (28000): Access denied for user 'meASDFASFASD'@'local' (using password: YES)
$ echo $?
1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2924 次 |
| 最近记录: |