bash - 将变量传递给 psql 脚本

标签 bash postgresql variables psql

我已经搜索了一段时间,但似乎找不到明确的答案...我正在尝试从终端运行 psql 脚本,同时传递一个表变量名和​​另一个变量作为psql 脚本。

BASH 命令:

psql db1 -U user1 -f '/.../Desktop/.../sample.sql' -v table=pg2 -v v1="'2018-02-01'"; 

PSQL 脚本:

SELECT count(*) FROM :table WHERE datekey = :v1;

以上作品。但是,我希望能够将表名和附加变量转换为脚本本身中的字符串,以便我可以在我定义的另一个函数中使用它。例如,我希望 pg2 的表名可以作为字符串“pg2”使用。与 datekey 变量类似的要求。这可能吗?我的观察是,只有在 CRUD 操作或 WHERE 子句中使用时,传递变量才有可能。

最佳答案

从你的问题中我得到的是对 bash 中变量的作用的误解。试试下面的脚本是否有帮助:

#!/bin/bash

user="user1"
sqlfile='/.../Desktop/.../sample.sql'
table='pg2'
v1="'2018-02-01'"

psql db1 -U "$user" -f "$sqlfile" -v table=$table -v v1="$v1"

关于bash - 将变量传递给 psql 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51011491/

相关文章:

python - 使用 curl 时让python发送回车键

linux - 协助复制文件的 bash 脚本

postgresql - 如何使用 Postgres 使用 Ecto 存储数组

bash - 在 shell 中使用循环使用 cat 编写多行

java 文件是从命令行执行的,而不是从浏览器(apache)执行的?

ruby - 将数组插入 postgresql 映射准备语句

postgresql - 在 cron 中备份 postgres 数据库的问题

powershell - Select-Object 表达式语句中的变量未按预期工作

c++ - c中不同函数的不同变量的相同地址

java - 将变量传递给 catch - Java