首页 > 解决方案 > 如何在一个脚本中同时执行 MySQL 查询和 bash 命令?

问题描述

我想在 bash 脚本中执行多个 SQL 查询。查询正在加载具有相似名称的文件。例如:File1.csv, File2.csv ...我知道我可以使用

mysql -u root -p <<EOF MYSQL QUERY 1 MYSQL QUERY 2 ... 我可以在这些查询中使用 bash 变量吗?我也尝试过类似的代码

for f in $dir; do 
echo "SET foreign_key_checks = 0; LOAD DATA LOCAL INFILE '$f' INTO TABLE $table CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n';"
done`

但是,我最后一次执行这样的脚本时,我的表崩溃了。我用来编写上述脚本的示例脚本是

  for f in $dumpDir/*.csv ; do
  table=`basename $f|cut -f1 -d'.'`
  echo "`date` Restoring table $table"
  echo "SET foreign_key_checks = 0; LOAD DATA LOCAL INFILE '$f' INTO TABLE $table CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n';" |$mysql || exit 1
done

我的桌子是否因为我错过了零件而崩溃了|$mysql || exit 1

标签: mysqlbashgithub

解决方案


|$mysql ||exit 1我通过在 MYSQL 查询之后附加来解决这个问题。我还使用了来自 ghtorrent 项目的配置。原始代码


推荐阅读