在PostgreSQL中显示表(来自MySQL)的等价物是什么?
当前回答
作为一个快速的oneliner
# just list all the postgres tables sorted in the terminal
db='my_db_name'
clear;psql -d $db -t -c '\dt'|cut -c 11-|perl -ne 's/^([a-z_0-9]*)( )(.*)/$1/; print'
或者如果您更喜欢更清晰的json输出多行:
IFS='' read -r -d '' sql_code <<"EOF_CODE"
select array_to_json(array_agg(row_to_json(t))) from (
SELECT table_catalog,table_schema,table_name
FROM information_schema.tables
ORDER BY table_schema,table_name ) t
EOF_CODE
psql -d postgres -t -q -c "$sql_code"|jq
其他回答
请注意,仅\dt将列出您正在使用的数据库的公共模式中的表。我喜欢将表保存在单独的模式中,因此接受的答案对我来说不起作用。
要列出特定模式中的所有表,我需要:
1) 连接到所需的数据库:
psql mydb
2) 指定要在\dt命令后查看表的架构名称,如下所示:
\dt myschema.*
这显示了我感兴趣的结果:
List of relations
Schema | Name | Type | Owner
----------+-----------------+-------+----------
myschema | users | table | postgres
myschema | activity | table | postgres
myschema | roles | table | postgres
要查看psql中的外部表,请运行\dE
该SQL查询适用于大多数PostgreSQL版本,非常简单。
select table_name from information_schema.tables where table_schema='public' ;
select
*
from
pg_catalog.pg_tables
where
schemaname != 'information_schema'
and schemaname != 'pg_catalog';
首先使用以下命令连接数据库
\c database_name
您将看到以下消息:您现在已连接到数据库database_name。然后运行以下命令
SELECT * FROM table_name;
在database_name和table_name中,只需更新数据库和表名
推荐文章
- 如何添加“删除级联”约束?
- 如何将PostgreSQL从9.6版本升级到10.1版本而不丢失数据?
- 为现有数据库生成ERD
- PostgreSQL错误:由于与恢复冲突而取消语句
- 按IN值列表排序
- 如何在Postgres 9.4中对JSONB类型的列执行更新操作
- PostgreSQL列名区分大小写吗?
- postgresql COUNT(DISTINCT…)非常慢
- Postgres:检查数组字段是否包含值?
- 如何在postgresql中创建数据库用户?
- 使用PSQL命令查找主机名和端口
- Postgresql列表和排序表的大小
- 选择其他表中没有的行
- 在PostgreSQL中使用UTC当前时间作为默认值
- 优化PostgreSQL进行快速测试