获取 mysql 命令的 return 代码
Get return code of the mysql command
我正在编写 shell 脚本以在 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
要执行的查询在 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);
这段代码工作正常,但是如何检查查询是否被执行?我的目标是在导入成功后删除文件,或者在出错时写入自定义日志文件。有什么建议吗?
每当您 运行 使用 mysql
(或 Unix 中的任何其他命令)的命令时,您都会得到一个 return 代码,您可以使用 $?
检查该代码。如果成功,它将是 0
。否则,它将是一个不同的数字。
所以你可以这样做:
mysql --user=${USER} --password=${PASS} --database= ${DATABASE} --local-infile=1 < myquery.sql
if [ $? -eq 0 ]; then
# remove file
else
# write to log
fi
测试
$ 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
我正在编写 shell 脚本以在 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
要执行的查询在 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);
这段代码工作正常,但是如何检查查询是否被执行?我的目标是在导入成功后删除文件,或者在出错时写入自定义日志文件。有什么建议吗?
每当您 运行 使用 mysql
(或 Unix 中的任何其他命令)的命令时,您都会得到一个 return 代码,您可以使用 $?
检查该代码。如果成功,它将是 0
。否则,它将是一个不同的数字。
所以你可以这样做:
mysql --user=${USER} --password=${PASS} --database= ${DATABASE} --local-infile=1 < myquery.sql
if [ $? -eq 0 ]; then
# remove file
else
# write to log
fi
测试
$ 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