如何在查询的where条件下传递unix变量?
How to pass unix variable in where condition of query?
我有一个文件,我将其文件名存储在 shell 变量中,我希望在 SQL select 查询的 WHERE 条件中传递该变量。我怎样才能做到这一点?
我的代码
cd /path/to/folder
var =$(ls tail)
id_var=$(echo "$var" | cut -f 1 -d '.')
...
...
sqlplus -s user/pwd@db < mysql.sql > output.txt
猫mysql.sql
select * from Records where "GlobalId"='$id_var'
来自:
cd /path/to/folder
var =$(ls tail)
id_var=$(echo "$var" | cut -f 1 -d '.')
sqlplus -s user/pwd@db @mysql.sql "${id_var}" > output.txt
然后在mysql.sql
中使用&1
替换第一个开始参数:
select * from Records where "GlobalId"='&1'
注意:&1
是替换变量(而不是绑定变量)所以你需要确保传入的值不执行任何SQL注入攻击。
您可以导出变量
导出 id_var
然后使用 envsubst 命令
envsubst < mysql.sql
这将替换您的变量。
我有一个文件,我将其文件名存储在 shell 变量中,我希望在 SQL select 查询的 WHERE 条件中传递该变量。我怎样才能做到这一点?
我的代码
cd /path/to/folder
var =$(ls tail)
id_var=$(echo "$var" | cut -f 1 -d '.')
...
...
sqlplus -s user/pwd@db < mysql.sql > output.txt
猫mysql.sql
select * from Records where "GlobalId"='$id_var'
来自
cd /path/to/folder
var =$(ls tail)
id_var=$(echo "$var" | cut -f 1 -d '.')
sqlplus -s user/pwd@db @mysql.sql "${id_var}" > output.txt
然后在mysql.sql
中使用&1
替换第一个开始参数:
select * from Records where "GlobalId"='&1'
注意:&1
是替换变量(而不是绑定变量)所以你需要确保传入的值不执行任何SQL注入攻击。
您可以导出变量 导出 id_var 然后使用 envsubst 命令 envsubst < mysql.sql
这将替换您的变量。