【问题标题】:Get return code of the mysql command获取mysql命令的返回码
【发布时间】:2015-01-08 15:13:06
【问题描述】:

我正在编写一个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 database shell csv ubuntu


    【解决方案1】:

    每当您使用 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
    

    测试

    $ 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
    

    【讨论】:

    猜你喜欢
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多