我有一个名为query1.sql
一个MySQL脚本文件,其中包含:参数传递给MySQL的脚本
select * FROM $(tblName) LIMIT 10;
我在MySQL控制台,我该如何传递参数给脚本?这不会转发变量:
mysql> \. query1.sql -v tblName=Users
我有一个名为query1.sql
一个MySQL脚本文件,其中包含:参数传递给MySQL的脚本
select * FROM $(tblName) LIMIT 10;
我在MySQL控制台,我该如何传递参数给脚本?这不会转发变量:
mysql> \. query1.sql -v tblName=Users
您可以使用user variables来实现您描述的行为。在将变量用作模式标识符而不是数据值时,您必须使用准备好的语句,以便动态组合查询。
query1.sql
:
SET @query = CONCAT('Select * FROM ', @tblName, ' LIMIT 10');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
援引为
mysql> SET @tblName = 'Users'; \. query1.sql
这可能会为你
mysql -u root -p -e"set @temp=1;" < /home/mysql/Desktop/a.sql
和
mysql> set @temp=some_value;
mysql> source file.sql
工作
这几乎与你的问题只是尝试
这里第一个不起作用。第二个是。 – silverdr
从vidyadhar的命令行调用工作对我来说,只是一个小改动:
mysql -u root -p -e"set @temp=1; `cat /home/mysql/Desktop/a.sql`"
从@ user4150422以上从我几乎工作答案,但cat
给了我许可问题,所以我不得不使用一个轻微的选择。古怪source
命令没有到位猫的工作,要么,但\.
没有
mysql -u root -p -e"set @temp=1; `\. /home/mysql/Desktop/a.sql`"
对于bash脚本:
tblName=$1
searchFor="%something%"
echo "select * FROM $tblName LIMIT 10;
select * From $tblName where somecolumn like '$searchFor';
" | mysql
以下链接可以帮助:http://databobjr.blogspot.com/2011/ 07 /传递参数到mysql-query.html –