SELECT array_to_string(ARRAY(
SELECT ret FROM (
(
-- 字段和约束信息
SELECT 'CREATE TABLE plca.TB_bss_indicators_detail_202401 (' || array_to_string(ARRAY(
SELECT SQL FROM (
(
-- 字段信息
SELECT array_to_string(ARRAY(
SELECT A.attname || ' ' || concat_ws('', T.typname, SUBSTRING(format_type(A.atttypid, A.atttypmod) FROM '\\(.*\\)')) || ' ' ||
CASE A.attnotnull WHEN 't' THEN 'NOT NULL' ELSE '' END || ' ' ||
CASE WHEN D.adbin IS NOT NULL THEN ' DEFAULT ' || pg_get_expr(D.adbin, A.attrelid) ELSE '' END
FROM pg_attribute A
LEFT JOIN pg_description b ON A.attrelid = b.objoid AND A.attnum = b.objsubid
LEFT JOIN pg_attrdef D ON A.attrelid = D.adrelid AND A.attnum = D.adnum,
pg_type T
WHERE A.attstattarget = -1 AND
A.attrelid = 'plca.TB_bss_indicators_detail_202401'::REGCLASS::OID AND
A.attnum > 0 AND
NOT A.attisdropped AND
A.atttypid = T.OID
ORDER BY A.attnum
), ',' || CHR(10)) AS SQL, 1 AS seri
)
UNION
(
-- 约束信息
SELECT 'CONSTRAINT ' || conname || ' ' || pg_get_constraintdef(OID) AS SQL, 2 AS seri
FROM pg_constraint T
WHERE conrelid = 'plca.TB_bss_indicators_detail_202401'::REGCLASS::OID
ORDER BY contype DESC
)
) AS T
), ',' || CHR(10)) || ')' AS ret, 1 AS orderby
)
UNION
(
-- 索引信息
SELECT array_to_string(ARRAY(
SELECT pg_get_indexdef(indexrelid)
FROM pg_index
WHERE indrelid = 'plca.TB_bss_indicators_detail_202401'::REGCLASS::OID AND
indisprimary = 'f' AND
indisunique = 'f'
), ';' || CHR(10)) AS ret, 2 AS orderby
)
UNION
(
-- 注释信息
SELECT array_to_string(ARRAY(
SELECT 'COMMENT ON COLUMN plca.TB_bss_indicators_detail_202401.' || A.attname || ' IS ''' || b.description || ''''
FROM pg_attribute A
LEFT JOIN pg_description b ON A.attrelid = b.objoid AND A.attnum = b.objsubid
WHERE A.attstattarget = -1 AND
A.attrelid = 'plca.TB_bss_indicators_detail_202401'::REGCLASS::OID AND
b.description IS NOT NULL
ORDER BY A.attnum
), ';' || CHR(10)) AS ret, 3 AS orderby
)
) AS results
), ';' || CHR(10) || CHR(13)) AS final_output;
pg查询建表语句
最新推荐文章于 2025-04-25 14:21:54 发布