首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

列出Postgres上具有数组数据类型的所有表

在PostgreSQL中,要列出所有包含数组数据类型的表,你可以使用以下SQL查询:

代码语言:txt
复制
SELECT
    t.table_schema,
    t.table_name,
    a.attname,
    pg_typeof(a.atttypid) AS type
FROM
    pg_class c
JOIN
    pg_attribute a ON a.attrelid = c.oid
JOIN
    pg_type t ON t.oid = a.atttypid
JOIN
    information_schema.tables AS tables ON tables.table_schema = c.relnamespace::regnamespace::text
    AND tables.table_name = c.relname
WHERE
    t.typname LIKE '%array%'
    AND NOT a.attisdropped
    AND c.relkind = 'r'
ORDER BY
    t.table_schema,
    t.table_name;

这个查询做了以下几件事情:

  1. pg_class表中选择所有的表(relkind = 'r'表示它是表)。
  2. 使用pg_attribute表来找到每个表的列。
  3. 通过pg_type表来过滤出那些数据类型名称包含"array"的列。
  4. 使用information_schema.tables来确保我们只考虑用户定义的表。
  5. 排除那些已经被标记为删除(attisdropped)的列。
  6. 最后,结果按照模式(schema)和表名排序。

这个查询将返回所有包含数组数据类型的表的模式、表名、列名以及数组的数据类型。

如果你想要进一步了解PostgreSQL中的数组数据类型,可以参考以下资源:

  • PostgreSQL官方文档关于数组类型:https://www.postgresql.org/docs/current/arrays.html
  • PostgreSQL官方文档关于系统目录视图:https://www.postgresql.org/docs/current/catalogs.html

请注意,执行此类查询可能需要具有足够的权限来访问数据库的系统目录。如果你在执行查询时遇到权限问题,请确保你的数据库用户有足够的权限或者联系数据库管理员获取相应的权限。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券