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


当前回答

1) 使用psql的PostgreSQL描述表

在psql命令行工具中,使用\d table_name或\d+table_name查找表的列信息

2) PostgreSQL使用information_schema描述表

SELECT语句查询information_schema数据库中列表的column_name、数据类型、字符最大长度;

选择列名称、数据类型、字符最大长度来自INFORMATION_SCHEMA.COLUMNS,其中table_name=“tablename”;

有关详细信息https://www.postgresqltutorial.com/postgresql-describe-table/

其他回答

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

示例:\d“用户”

这应该是解决方案:

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

在MySQL中,DESCRIBE table_name


在PostgreSQL中,\d table_name


或者,可以使用以下长命令:

SELECT
        a.attname AS Field,
        t.typname || '(' || a.atttypmod || ')' AS Type,
        CASE WHEN a.attnotnull = 't' THEN 'YES' ELSE 'NO' END AS Null,
        CASE WHEN r.contype = 'p' THEN 'PRI' ELSE '' END AS Key,
        (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid), '\'(.*)\'')
                FROM
                        pg_catalog.pg_attrdef d
                WHERE
                        d.adrelid = a.attrelid
                        AND d.adnum = a.attnum
                        AND a.atthasdef) AS Default,
        '' as Extras
FROM
        pg_class c 
        JOIN pg_attribute a ON a.attrelid = c.oid
        JOIN pg_type t ON a.atttypid = t.oid
        LEFT JOIN pg_catalog.pg_constraint r ON c.oid = r.conrelid 
                AND r.conname = a.attname
WHERE
        c.relname = 'tablename'
        AND a.attnum > 0

ORDER BY a.attnum

使用以下SQL语句

SELECT DATA_TYPE 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_name = 'tbl_name' 
AND COLUMN_NAME = 'col_name'

若替换tbl_name和col_name,它将显示您要查找的特定列的数据类型。

1) 使用psql的PostgreSQL描述表

在psql命令行工具中,使用\d table_name或\d+table_name查找表的列信息

2) PostgreSQL使用information_schema描述表

SELECT语句查询information_schema数据库中列表的column_name、数据类型、字符最大长度;

选择列名称、数据类型、字符最大长度来自INFORMATION_SCHEMA.COLUMNS,其中table_name=“tablename”;

有关详细信息https://www.postgresqltutorial.com/postgresql-describe-table/