在PostgreSQL中,要列出所有包含数组数据类型的表,你可以使用以下SQL查询:
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;
这个查询做了以下几件事情:
pg_class
表中选择所有的表(relkind = 'r'
表示它是表)。pg_attribute
表来找到每个表的列。pg_type
表来过滤出那些数据类型名称包含"array"的列。information_schema.tables
来确保我们只考虑用户定义的表。attisdropped
)的列。这个查询将返回所有包含数组数据类型的表的模式、表名、列名以及数组的数据类型。
如果你想要进一步了解PostgreSQL中的数组数据类型,可以参考以下资源:
请注意,执行此类查询可能需要具有足够的权限来访问数据库的系统目录。如果你在执行查询时遇到权限问题,请确保你的数据库用户有足够的权限或者联系数据库管理员获取相应的权限。
领取专属 10元无门槛券
手把手带您无忧上云