带参数的 MySQL 脚本

标签 mysql deployment

我想创建一个部署脚本,以某种方式模拟 Oracle 部署脚本,您可以在其中使用 ¶m 使用先前声明的参数。 我需要为不同数据库上的不同用户自动调用此脚本。

例如我的脚本应该是:

USE &param;
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/

相关文章:

mysql - 如何设置 MySQL 索引以获得最佳结果

javascript - 在部署之前,您对 JavaScript 代码做了什么?

asp.net-mvc - 避免删除 Web Publish 上的文件夹

javascript - 在 Heroku 前端部署 Angular/Express 应用程序时出现问题无法访问 API 端点

android - 将应用程序部署到许多 Android 平板电脑

java - 在 Tomcat 上部署 .war 时图像路径不正确

MySQL MAX 与第二列关联

mysql - sql.DB.Query "expected 0 arguments"使用 "?"占位符时

java - 如何使用 Java 故障转移到 AWS RDS MySQL 副本

mysql - 当列具有相同值时删除行,并将这些行与 MySQL 中的相同主键相关联