从bash-script运行sql-command?

时间:2013-12-03 12:45:07

标签: mysql bash

我创建了一个必须更改表格引擎的小脚本:

#!/bin/bash

echo "use test_1;" > query.sql

get_list () {
mysql -u teamcity -ppassword -B -N -e 'show tables like "%"' test_1 | xargs -I '{}'     echo "alter table {} engine=innodb;" >> query.sql
}

get_list ;

mysql -u teamcity -ppassword < query.sql

但是 - 如何避免使用query.sql文件?我用“Here document”做了几次尝试 - 但是无法解决它......

例如 - 尝试这个:

#!/bin/bash

get_list () {
mysql -u teamcity -ppassword -B -N -e 'show tables like "%"' test_1 | xargs -I '{}'     echo "alter table {} engine=innodb;"
}

a="$(get_list)"
b="use test_1;"
c="$b $a"

mysql -u teamcity -ppassword <<< $c

但它不起作用......

感谢您的提示。

1 个答案:

答案 0 :(得分:3)

将所有内容放入函数和管道中:

#!/bin/bash
get_list () {
  echo "use test_1;"

  mysql -u teamcity -ppassword -B -N -e 'show tables like "%"' test_1 | xargs -I '{}' echo "alter table {} engine=innodb;"
}

get_list | mysql -u teamcity -ppassword