如何使用psql命令在PostgreSQL中执行Oracle的DESCRIBE TABLE?


当前回答

您可以使用此选项:

SELECT attname 
FROM pg_attribute,pg_class 
WHERE attrelid=pg_class.oid 
AND relname='TableName' 
AND attstattarget <>0; 

其他回答

/dt是列出数据库中所有表的命令。使用/d命令和/d+,我们可以获得表的详细信息。sysntax将如下所示*/d table_name(或)\d+table_name

我为get表模式编写了以下脚本。

'CREATE TABLE ' || 'yourschema.yourtable' || E'\n(\n' ||
array_to_string(
array_agg(
'    ' || column_expr
)
, E',\n'
) || E'\n);\n'
from
(
SELECT '    ' || column_name || ' ' || data_type || 
coalesce('(' || character_maximum_length || ')', '') || 
case when is_nullable = 'YES' then ' NULL' else ' NOT NULL' end as column_expr
FROM information_schema.columns
WHERE table_schema || '.' || table_name = 'yourschema.yourtable'
ORDER BY ordinal_position
) column_list;

除了已经找到的命令行\d+<table_name>之外,还可以使用info_schema.columns使用信息模式查找列数据

SELECT *
FROM info_schema.columns
WHERE table_schema = 'your_schema'
AND table_name   = 'your_table'

当表名以大写字母开头时,应将表名放在引号中。

示例:\d“用户”

下面的命令可以简单地描述多个表

\dt <table> <table>

下面的命令可以详细描述多个表:

\d <table> <table>

下面的命令可以更详细地描述多个表:

\d+ <table> <table>