sql - 如何将 bash 变量传递到 sql 文件

标签 sql bash postgresql psql

我有一个 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/

相关文章:

mysql - 计算当前时间到凌晨 12 点之间的剩余时间

linux - 如何在bash中将所有子目录中的所有文件gzip到一个压缩文件中

Linux case 语句总是给出相同的结果

ruby-on-rails - 如何解决 Heroku 上的内存配额超出和请求超时错误? rails 网络 API

postgresql - 为什么 autovacuum 进程需要这么多内存和交换内存?

sql - Postgresql 中的 JSON 输出

mysql - 由日期和自增整数组成的字符串主键

sql-server - SQL 查询获取每个博客帖子的最新用户评论仅限于每个用户一个?

linux - linux命令行中的分号

javascript - Loopback: "Unhandled rejection Error: The transaction is not active"同时开始10个事务