【问题标题】:How to pass a bash variable into an sql file如何将 bash 变量传递到 sql 文件中
【发布时间】:2014-03-05 17:30:27
【问题描述】:

我有一个 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 文件调用时更容易维护。

【问题讨论】:

    标签: sql bash postgresql psql


    【解决方案1】:

    您可以使用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
    

    【讨论】:

    • 谢谢!完美运行,给了我一个整合另一个脚本的想法(以后减少维护)。
    猜你喜欢
    • 2012-12-17
    • 2015-05-21
    • 2019-11-08
    • 2021-06-24
    • 1970-01-01
    • 2018-03-02
    • 2021-10-25
    • 2018-10-22
    • 1970-01-01
    相关资源
    最近更新 更多