相关疑难解决方法(0)

如何使用 psql 列出所有数据库和表?

我正在尝试学习 PostgreSQL 管理并开始学习如何使用psql命令行工具。

当我使用 登录时psql --username=postgres,如何列出所有数据库和表?

我曾尝试\dddS+但没有列出。我已经用 pgAdmin III 创建了两个数据库和几个表,所以我知道它们应该被列出。

postgresql tools psql command-line

1362
推荐指数
8
解决办法
276万
查看次数

psql,获取要由脚本解析的数据库列表

我想使用 psql 列出 Postgres 服务器上的所有数据库,以便由脚本解析。此命令列出了它们:

psql -l -A -t
Run Code Online (Sandbox Code Playgroud)

但输出显示了一个明显的问题:记录由换行符分隔,但也包含换行符。

$ psql -l -A -t
postgres|postgres|UTF8|en_CA.UTF-8|en_CA.UTF-8|
template0|postgres|UTF8|en_CA.UTF-8|en_CA.UTF-8|=c/postgres
postgres=CTc/postgres
template1|postgres|UTF8|en_CA.UTF-8|en_CA.UTF-8|=c/postgres
postgres=CTc/postgres
Run Code Online (Sandbox Code Playgroud)

使用 -R 选项我可以更改记录分隔符,但似乎无论我将其更改为什么,都存在该字符串出现在数据中的风险。是否可以告诉 psql 用其他东西替换数据中的换行符?(然后如果字符串也出现在数据中呢?)

我还尝试设置的记录分隔符为空字符这样的序列-R '\000'-R "\0",但它似乎并没有解释转义序列在所有的参数,并且只使用文本字符串\000代替。

我知道列出所有数据库的另一个选项是:

psql --quiet --no-align --tuples-only --dbname=postgres --username=postgres --host=127.0.0.1 --port=5432 --command="SELECT datname FROM pg_database"
Run Code Online (Sandbox Code Playgroud)

但这需要我为 postgres 用户提供密码,所以这是不可取的。也许还有另一种方法可以获得所有数据库的名称列表?

postgresql psql

5
推荐指数
2
解决办法
2013
查看次数

标签 统计

postgresql ×2

psql ×2

command-line ×1

tools ×1