我想从 Postgres DB 的目录表生成数据字典。我想将表的名称放在一行上,然后是列的列表。
我尝试这样做\gexec
:
\set schema '''my_schema'''
\set fname 'out_file.txt'
\o :fname
SELECT format('
select ''>>> %I'';
select column_name, data_type, coalesce(character_maximum_length, numeric_precision), description
from information_schema.columns
left join pg_catalog.pg_description on objoid = ''%I.%I''::regclass and objsubid = ordinal_position
where table_name = ''%I''', table_name, table_schema, table_name, table_name)
FROM
information_schema.tables
where table_schema = :schema
order by table_name
\gexec
\o
但第一条语句似乎被省略,并且表的名称没有出现在结果中。
当然,我可以简单地在每一行中添加表名称,但就我的目的而言,这意味着将所有这些放入正确的文档中之后需要一个额外的过程。
有没有办法将两个查询的结果保存在结果文件中?