PostgreSQL 9.0中奇怪的数据库名称

时间:2014-07-17 23:53:35

标签: sql postgresql psql

我们的产品包含多个数据库。我可以通过执行psql -tAc '\l' | cut -f 1 -d \|列出这些数据库。

但是,有些数据库名称看起来很奇怪,我想知道原因。

abc_clienta
abc_clientb
abc=CTc/abc
abcdump=C/abc
编辑:我已经向数据库管理员询问了这些,他不知道,所以我推测这些是特定于PostgreSQL的“元数据库”。所以我想我的第一个问题应该是 PostgreSQL是否有不同类型的数据库?

编辑2:我相信(并被告知)这些是PostgreSQL特定表的原因之一是,还有这些类型的数据库:

= postgres的四氯化碳/ postgres的    postgres的= CTC / postgres的

是的,上面的条目列出两次,因为它在输出中出现两次。我不知道PostgreSQL如何拥有多个同名的数据库。

编辑3:我应该创建一个单独的SO帐户来询问工作问题,因为我们以不寻常的方式做事,以至于我为其他人做出的愚蠢的设计决定投票。

2 个答案:

答案 0 :(得分:1)

这些不是数据库名称。它们是数据库访问控制权限。 -tA的{​​{1}}选项仅表示返回元组(不是标题),并且不对齐数据。与psql命令结合使用时,实际上是返回PostgreSQL 访问控制权限,而不是数据库名称。

答案 1 :(得分:0)

您可能会发现直接查询系统目录更简单。您可以将SQL语句传递给psql。它将写入输出并退出,因此您可以在shell脚本中使用它。

$ echo 'select datname from pg_database;' | psql -tA -U postgres
template1
template0
postgres
sandbox

通常情况下,我会转到information_schema来获取此类内容,但似乎并不是包含所有数据库名称的视图。 "数据名"尽管如此,色谱柱的稳定性至少在8.4到9.3之间,所以我不会因此而失去很多睡眠。