有没有办法轻松获取查询结果的列类型?我阅读了psql文档,但我认为它不支持.理想情况下,我可以得到类似的东西:
columna : text | columnb : integer
----------------+-------------------
oh hai | 42
Run Code Online (Sandbox Code Playgroud)
有没有办法在不编码的情况下获取这些信息?
Jay*_*lor 46
可以获取任何SELECT查询结果列类型.
例
鉴于以下查询和结果,让我们回答问题*"all_ids的列类型是什么?"*
SELECT array_agg(distinct "id") "all_ids" FROM "auth_user";
all_ids
--------------------------------------------
{30,461577687337538580,471090357619135524}
(1 row)
Run Code Online (Sandbox Code Playgroud)
我们需要一种机制来揭示"all_ids"的类型.
在postgres邮件列表档案中,我发现了对名为的本机pg函数的引用pg_typeof.
用法示例:
SELECT pg_typeof(array_agg(distinct "id")) "all_ids" FROM "auth_user";
Run Code Online (Sandbox Code Playgroud)
输出:
all_ids
----------
bigint[]
(1 row)
Run Code Online (Sandbox Code Playgroud)
干杯!
Luk*_*zda 13
\gdesc命令(psql 11)绝对可以:
显示当前查询缓冲区结果的描述(即列名和数据类型)。查询并未实际执行;但是,如果它包含某种类型的语法错误,则会以正常方式报告该错误。
如果当前查询缓冲区为空,则改为描述最近发送的查询。
例如:
$ SELECT * FROM pg_database \gdesc
COLUMN | TYPE
---------------+-----------
datname | name
datdba | oid
encoding | INTEGER
datcollate | name
datctype | name
datistemplate | BOOLEAN
datallowconn | BOOLEAN
datconnlimit | INTEGER
datlastsysoid | oid
datfrozenxid | xid
datminmxid | xid
dattablespace | oid
datacl | aclitem[]
Run Code Online (Sandbox Code Playgroud)
我认为您无法完全打印出样本中的内容,除非您为此编写了存储过程。
一种方法(两个“选择”):
create table my_table as select ...\d my_tableselect * from my_table| 归档时间: |
|
| 查看次数: |
20151 次 |
| 最近记录: |