我有一个名为的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)
这可能对你有用
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)
这几乎与您的问题相似,只是尝试一下