将参数传递给MySQL脚本

dec*_*apo 17 mysql

我有一个名为的MySQL脚本文件query1.sql,其中包含:

select * FROM $(tblName) LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

我在MySQL控制台,如何将参数传递给脚本?这不会转发变量:

mysql> \. query1.sql -v tblName=Users
Run Code Online (Sandbox Code Playgroud)

MvG*_*MvG 13

您可以使用用户变量来实现您描述的行为.当您将变量用作模式标识符而不是数据值时,您必须使用预准备语句,以便可以动态组合查询.

query1.sql:

SET @query = CONCAT('Select * FROM ', @tblName, ' LIMIT 10');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Run Code Online (Sandbox Code Playgroud)

调用为

mysql> SET @tblName = 'Users'; \. query1.sql
Run Code Online (Sandbox Code Playgroud)


use*_*422 10

来自vidyadhar的命令行调用对我有用,但只做了一个小修改:

mysql -u root -p -e"set @temp=1; `cat /home/mysql/Desktop/a.sql`"
Run Code Online (Sandbox Code Playgroud)


vid*_*har 7

这可能对你有用

mysql -u root -p -e"set @temp=1;" < /home/mysql/Desktop/a.sql
Run Code Online (Sandbox Code Playgroud)

mysql> set @temp=some_value;
mysql> source file.sql
Run Code Online (Sandbox Code Playgroud)

这几乎与您的问题相似,只是尝试一下

  • 在这里第一个不起作用。第二个做。 (2认同)