我想创建一个部署脚本,以某种方式模拟 Oracle 部署脚本,您可以在其中使用 ¶m 使用先前声明的参数。 我需要为不同数据库上的不同用户自动调用此脚本。
例如我的脚本应该是:
USE ¶m;
DROP TABLE IF EXISTS `TEST` ;
CREATE TABLE IF NOT EXISTS `TEST` (X INT(16))
etc....
当然 ¶m 是我在 Oracle 环境中使用的。
谢谢
更新:
忘了说我现在用的是windows环境。我创建了一个批处理脚本来调用 mysql 脚本。我认为最简单的方法是传递给 mysql 2 命令:1) 使用我拥有的模式作为参数,然后调用将创建表的脚本,而不管模式如何。不幸的是,mysql 似乎明白我想连接到模式 X,但不想调用脚本。
REM param is the schema and mainsql is the script
SET param="%1"
SET mainsql="script.sql"
echo %param%
echo %mainsql%
mysql -u <user> --password=<psw> %param% "source %mainsql%;"
最佳答案
据我所知,您不能直接将变量传递给 MySQL 脚本。您能做的最好的事情就是在包装器 shell 脚本中设置用户变量。像这样的东西:
passed_var1=$1
passed_var2=$2
mainsql=script.sql
mysql $(usual_parameters) -e "set @user_var1=$passed_var1; set @user_var2=$passed_var2; source $mainsql"
当然要根据实际使用进行调整。
关于带参数的 MySQL 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9908462/