mysql - 在bash脚本中输出MySQL进程

标签 mysql bash import

在此寻求 bash 专家的帮助。

我想做的事情可能非常简单,但我在谷歌中找不到任何可以清楚解释要做什么的内容。脚本中还有很多其他内容,但这是我需要帮助的 block :

 # import the extracted sql into mysql
   for sql_file in $(find -maxdepth 1 -type f -iname "*$1*.sql" | sort); do
       echo "Importing: $sql_file"

       if mysql -u [USER] -p[PASSWORD] -h [HOST] $db < $sql_file
       then
           echo "Database $sql_file imported successfully. $db has been updated"
       else
           echo "ERROR: Database importing $sql_file into $db"
       fi
   done

如果您看不出来,我基本上是在尝试将多个 db.sql 文件导入循环内的给定目标。我想要做的是添加 mysql 命令的输出以显示此步骤中可能生成的任何 MySql 错误。此输出将直接出现在这一行之后:

echo "ERROR: Database importing $sql_file into $db"

如果这一步导入失败,我希望它输出类似这样的内容,但不退出脚本:

 MySQL Import Failed: [Output what mysql would output to command line right here.]

这将告知执行导入的人员究竟出了什么问题,以便他们可以准确地告诉开发人员他们遇到了什么。

我不知道这是否太模糊,但是任何帮助将不胜感激。

最佳答案

如何生成单独的日志和错误文件,如下所示:

for sql_file in $(find -maxdepth 1 -type f -iname "*$1*.sql" | sort); do
    echo "Importing: $sql_file"

    log=$sql_file.log
    err=$sql_file.err
    if mysql -u [USER] -p[PASSWORD] -h [HOST] $db < $sql_file > $log 2> $err
    then
        echo "Database $sql_file imported successfully. $db has been updated"
    else
        echo "ERROR: Database importing $sql_file into $db"
        echo "<<<<<" 
        cat $err
        echo ">>>>>"
    fi
done

通过这种方式,您可以跟踪每个脚本的处理情况。对于您原来的问题,只需生成错误文件就足够了。如果需要,您甚至可以在 cat 之后将其删除。

关于mysql - 在bash脚本中输出MySQL进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19938901/

相关文章:

java - 复制文件与复制文件信息

PHP 搜索查询与插入语句

MySQL LAST_INSERT_ID 在存储过程中返回0但未手动执行

json - 在 shell 中解析 JSON

linux - 监听 netcat 工作但不能 grep'able(或其他几个实用程序)

bash - 如何在 bash 参数中保留引用的字符串

python - 如何区分因文件不存在而导致的导入错误与因文件不解析而导致的导入错误

c - 在 C 中导入 bash 模块

c# - 使用 C# 检查用户是否已存在于 MySql 数据库中

php - WordPress:结合类别和标签