【问题标题】:PostgreSQL query for table column comments?PostgreSQL 查询表列注释?
【发布时间】:2017-09-10 04:12:25
【问题描述】:

我已将 MySQL 数据库迁移到 PostgreSQL 并替换了查询

SHOW FULL COLUMNS FROM schema_name.table_name;

用 Postgres 等效项,

SELECT * FROM information_schema.columns WHERE table_schema = 'schema_name' and table_name = 'table_name';

返回列及其属性,但是在 MySQL 查询中返回的“评论”属性在 PostgreSQL 查询中不返回。

有没有办法查询与每个 column_name 关联的 cmets?

【问题讨论】:

  • @mpen 建议的重复地址表 cmets 和类似的并没有明确回答我关于需要不同方法的 column cmets 的问题。

标签: mysql postgresql database-migration


【解决方案1】:

这个怎么样:

select col_description((table_schema||'.'||table_name)::regclass::oid, ordinal_position) as column_comment
, * from information_schema.columns 
WHERE table_schema = 'schema_name' 
and table_name = 'table_name';

【讨论】:

    【解决方案2】:

    你知道这显示在\dt+ 下,你可以逆向工程 psql 对-E 所做的事情

    -E --echo-hidden 回显由 \d 和其他反斜杠命令生成的实际查询。你可以用它来研究psql的内部操作。这相当于将变量 ECHO_HIDDEN 设置为 on。

    psql -d test -E -c'\dt+ foo'
    ********* QUERY **********
    SELECT n.nspname as "Schema",
      c.relname as "Name",
      CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' END as "Type",
      pg_catalog.pg_get_userbyid(c.relowner) as "Owner",
      pg_catalog.pg_size_pretty(pg_catalog.pg_table_size(c.oid)) as "Size",
      pg_catalog.obj_description(c.oid, 'pg_class') as "Description"
    FROM pg_catalog.pg_class c
         LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relkind IN ('r','s','')
          AND n.nspname !~ '^pg_toast'
      AND c.relname ~ '^(foo)$'
      AND pg_catalog.pg_table_is_visible(c.oid)
    ORDER BY 1,2;
    **************************
    

    您可以在这里看到 psql 显示的所有信息。正如他们所说,教人钓鱼...?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      相关资源
      最近更新 更多