1、背景
在SQL数据库中,我们经常需要查询表的结构信息,包括表的字段名称、数据类型和约束等。通过查询表结构,我们可以深入了解表的设计和使用规则,为数据操作提供基础支持,当我们需要进行数据迁移、数据分析或系统维护时,了解表的表结构可以帮助我们更好进行相关操作。梧桐云原生分析型数据库没有提供查询表结构的系统视图,所以需要我们封装函数满足需求。
2、获取数据库表结构
2.1 函数封装
函数名称:show_createtable
入参:
| 参数名称 | 描述 | 样例 |
|---|---|---|
| srctable | 模式名.表名。 | table_schema.table_name |
返回值:成功直接打印出表结构,失败报出错误信息。
2.2 底层实现
create or replace function show_createtable (IN srctable text)
returns text language plpgsql as
$$
declare
V_SNAME TEXT := ‘’;
V_TNAME TEXT := ‘’;
… …
BEGIN
… …
– 获取字段及字段类型,以及字段的COMMENT,DEFAULT,NOT NULL
FOR V_COLUMNSTR_VIEW01 IN (
SELECT
a.attname,
pg_catalog.format_type(a.atttypid, a.atttypmod) as type,
a.attnotnull,
d.description,
pg_get_expr(ad.adbin, ad.adrelid)::information_schema.character_data as column_default
from
pg_catalog.pg_attribute a
inner join pg_catalog.pg_class_internal c on a.attrelid = c.oid
left join pg_description d on c.oid = d.objoid
and a.attnum = d.objsubid
left join pg_attrdef ad on c.oid = ad.adrelid
and a.attnum = ad.adnum
where
a.attnum > 0
and not a.attisdropped
and c.oid = V_OID1
order by
a.attnum
) LOOP IF V_COUNTER = 0 THEN V_COLUMNSTR := V_COLUMNSTR || ’ “’ || V_COLUMNSTR_VIEW01.attname || E’” ’ || V_COLUMNSTR_VIEW01.type;
ELSE V_COLUMNSTR := V_COLUMNSTR || E’,\n “’ || V_COLUMNST

最低0.47元/天 解锁文章
730

被折叠的 条评论
为什么被折叠?



