jpm*_*c26 6 postgresql identifier keyword psql
psql有一个用于传递命名参数的构造:
psql -v name='value'
Run Code Online (Sandbox Code Playgroud)
然后可以在脚本中引用它:
SELECT :name;
Run Code Online (Sandbox Code Playgroud)
这将给出结果
?column?
----------
value
(1 row)
Run Code Online (Sandbox Code Playgroud)
在开发过程中,我需要相当频繁地删除并重新创建数据库的副本,所以我正在尝试自动化该过程.所以我需要运行一个强制断开所有用户然后删除数据库的查询.但是这个操作的数据库会有所不同,因此数据库名称必须是一个参数.
问题是断开用户的查询需要string(WHERE pg_stat_activity.datname = 'dbname'
),丢弃的查询需要一个不带引号的token(DROP DATABASE IF EXISTS dbname
).(对不起.不知道该怎么称呼这种令牌.)
我可以在DROP查询中使用不带引号的命名参数,但在断开连接查询中引用命名参数会导致参数不被展开.即,我会得到字符串':name'
而不是字符串'value'
.
有没有办法将不带引号的值转换为字符串或将字符串转换为DROP查询的不带引号的标记?我可以通过将断开连接和DROP查询放在单独的脚本中并将带有引号的参数传递给断开连接并且不带引号到DROP来解决它,但我更喜欢它们在同一个脚本中,因为它们实际上是两个步骤在一个过程中.
归档时间: |
|
查看次数: |
1184 次 |
最近记录: |