我有一个 bash 脚本来调用 postgres 中的选择。我希望能够将变量从命令行传递到 sql 文件中。
sh myscript.sh 1234
#!/bin/bash
dbase_connect="psql -h server -U username dbase"
file="/tmp/$fname.csv"
sql="/home/user/sql_files/query.sql"
sudo bash -c "$dbase_connect -c -q -A -F , -f $sql -o $file"
查询可以很简单:
select name from table where id = $1;
但我不知道如何将$1
调用到sql文件中。实际的查询要大得多,我更喜欢将其保留在 bash 查询本身之外,因为作为单独的 .sql 文件调用时更容易维护。
最佳答案
您可以使用sed
插入参数:
#!/bin/bash
dbase_connect="psql -h server -U username dbase"
file="/tmp/$fname.csv"
sql="/home/user/sql_files/query.sql"
tmp="home/user/sql_files/query.sql.tmp"
s="s/\$1/$1/g"
cat $sql | sed $s > $tmp
sudo bash -c "$dbase_connect -c -q -A -F , -f $tmp -o $file"
rm -f $tmp
关于sql - 如何将 bash 变量传递到 sql 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22204911/