bash - 将变量传递给 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"
推荐阅读
- java - 根据用户操作提取定位器
- reactjs - 使用 useParams() 钩子获取多个 URL 参数
- javascript - Angular js 到 Angular 8
- r - 在 R 中,有没有办法用另一个数据帧的值重新编码一个数据帧的列?
- python - 如何在动态创建的日志目录中生成 pytest-html 报告
- spring - Spring 与 JAX-RS
- postgresql - Ecto.Repo.insert!使用“on_conflict: :nothing”引发 Postgresql“在“ON”处或附近出现语法错误”
- swift - UserDefaults 疯狂,用 DatePicker 取 2
- postman - 邮递员-如何从标头授权中保存令牌值
- javascript - 在PowerShell中触发javascript对象事件