Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将变量从shell脚本传递到mysql脚本_Mysql_Linux_Bash_Shell_Variables - Fatal编程技术网

如何将变量从shell脚本传递到mysql脚本

如何将变量从shell脚本传递到mysql脚本,mysql,linux,bash,shell,variables,Mysql,Linux,Bash,Shell,Variables,我有一堆mysql脚本,它们使用name1作为数据库名称,并用我的数据填充该数据库。但是,我希望能够选择数据库的名称,而不是总是在sql脚本中的任何地方将其命名为name1 我已经有了一个包装器shell脚本,它接受数据文件的路径,现在我希望它也接受数据库的名称 在shell脚本中,我指定: DATABASE_NAME=$2 在我的mysql脚本顶部有没有任何方法可以使用$DATABASE\u NAME?所以在mysql脚本中,应该是: USE DATABASE_NAME; 而不是我现在拥有

我有一堆mysql脚本,它们使用name1作为数据库名称,并用我的数据填充该数据库。但是,我希望能够选择数据库的名称,而不是总是在sql脚本中的任何地方将其命名为name1

我已经有了一个包装器shell脚本,它接受数据文件的路径,现在我希望它也接受数据库的名称

在shell脚本中,我指定:

DATABASE_NAME=$2
在我的mysql脚本顶部有没有任何方法可以使用$DATABASE\u NAME?所以在mysql脚本中,应该是:

USE DATABASE_NAME;
而不是我现在拥有的:

USE name1;

您可以使用
mysql-e
执行代码:

mysql -e "USE ${DATABASENAME}; Some sql"
这样,任何替代品都能起作用


或者,您可以将临时sql文件或管道代码写入mysql,在解析该文件时只需替换
${DATABASENAME}
。(
-e
选项是最透明和最简单的)

在脚本中,您一次使用多少个数据库?如果为1,则清理脚本一次。我只使用一个名为name1的数据库。但我有近10个mysql脚本引用它。还有,你说的“清理脚本一次”是什么意思?我不明白人们用
mydb.table1…
查找和替换
mydb.
到处
Ctrl-H
查找和替换的意义。Poof,
mydb.
进入空白,将脚本添加到问题中。如果我这样做,我可能会有类似于
mysql-e“USE${DATABASENAME};DataLoad.sql”
。在DataLoad.sql文件中,如何引用相同的数据库名称?(对于类似于
SELECT COUNT(*)FROM name1.Load
的内容,其中我希望name1被DATABASENAME替换)@Jain
USE
命令设置默认数据库。因此,只需将数据库名称保留在您的SQL中,例如从Load中选择COUNT(*)。您可以使用
源文件名.SQL
从文件中加载SQL。@Barmar我尝试过,但对于我的一些SQL脚本,它说如果我没有名称1.Load,则该表不存在。我同意你的逻辑,但也许mysql并不总是一样的。不知道为什么它不起作用