mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-02 07:20:24 +08:00
109 lines
3.3 KiB
SQL
109 lines
3.3 KiB
SQL
--PGSQL_DB_SCHEMAS 库schemas
|
|
select
|
|
n.nspname as "schemaName"
|
|
from
|
|
pg_namespace n
|
|
where
|
|
has_schema_privilege(n.nspname, 'USAGE')
|
|
and n.nspname not like 'pg_%'
|
|
and n.nspname not like 'dbms_%'
|
|
and n.nspname not like 'utl_%'
|
|
and n.nspname != 'information_schema'
|
|
order by
|
|
n.nspname
|
|
---------------------------------------
|
|
--PGSQL_TABLE_INFO 表详细信息
|
|
SELECT
|
|
c.relname AS "tableName",
|
|
obj_description(c.oid) AS "tableComment",
|
|
pg_total_relation_size(c.oid) AS "dataLength",
|
|
pg_indexes_size(c.oid) AS "indexLength",
|
|
psut.n_live_tup AS "tableRows"
|
|
FROM
|
|
pg_class c
|
|
JOIN
|
|
pg_namespace n ON c.relnamespace = n.oid
|
|
JOIN
|
|
pg_stat_user_tables psut ON psut.relid = c.oid
|
|
WHERE
|
|
has_table_privilege(c.oid, 'SELECT')
|
|
and n.nspname = current_schema()
|
|
{{if .tableNames}}
|
|
and c.relname in ({{.tableNames}})
|
|
{{end}}
|
|
ORDER BY
|
|
c.relname;
|
|
---------------------------------------
|
|
--PGSQL_INDEX_INFO 表索引信息
|
|
SELECT a.indexname AS "indexName",
|
|
'BTREE' AS "IndexType",
|
|
case when a.indexdef like 'CREATE UNIQUE INDEX%%' then 1 else 0 end as "isUnique",
|
|
obj_description(b.oid, 'pg_class') AS "indexComment",
|
|
indexdef AS "indexDef",
|
|
c.attname AS "columnName",
|
|
c.attnum AS "seqInIndex",
|
|
case when a.indexname like '%%_pkey' then 1 else 0 end AS "isPrimaryKey"
|
|
FROM pg_indexes a
|
|
join pg_class b on a.indexname = b.relname
|
|
join pg_attribute c on b.oid = c.attrelid
|
|
WHERE a.schemaname = (select current_schema())
|
|
AND a.tablename = '%s'
|
|
AND a.indexname not like '%%_pkey'
|
|
---------------------------------------
|
|
--PGSQL_COLUMN_MA 表列信息
|
|
SELECT
|
|
a.table_name AS "tableName",
|
|
a.column_name AS "columnName",
|
|
a.is_nullable AS "nullable",
|
|
t.typname AS "dataType",
|
|
a.character_maximum_length AS "charMaxLength",
|
|
a.numeric_precision AS "numPrecision",
|
|
CASE
|
|
WHEN a.column_default LIKE 'nextval%%' THEN NULL
|
|
ELSE a.column_default
|
|
END AS "columnDefault",
|
|
a.numeric_scale AS "numScale",
|
|
CASE
|
|
WHEN a.column_default LIKE 'nextval%%' THEN 1
|
|
ELSE 0
|
|
END AS "autoIncrement",
|
|
CASE
|
|
WHEN b.column_name IS NOT NULL THEN 1
|
|
ELSE 0
|
|
END AS "isPrimaryKey",
|
|
(
|
|
SELECT
|
|
description
|
|
FROM
|
|
pg_description
|
|
WHERE
|
|
objoid = c.oid
|
|
AND objsubid = a.ordinal_position
|
|
) AS "columnComment"
|
|
FROM
|
|
information_schema.columns a
|
|
LEFT JOIN information_schema.key_column_usage b ON a.table_schema = b.table_schema
|
|
AND b.table_name = a.table_name
|
|
AND b.column_name = a.column_name
|
|
JOIN pg_catalog.pg_class c ON c.relname = a.table_name
|
|
AND c.relnamespace = (
|
|
SELECT
|
|
oid
|
|
FROM
|
|
pg_catalog.pg_namespace
|
|
WHERE
|
|
nspname = a.table_schema
|
|
)
|
|
JOIN pg_catalog.pg_attribute att ON att.attrelid = c.oid
|
|
AND att.attname = a.column_name
|
|
JOIN pg_catalog.pg_type t ON t.oid = att.atttypid
|
|
WHERE
|
|
a.table_schema = (
|
|
SELECT
|
|
current_schema()
|
|
)
|
|
AND a.table_name IN (%s)
|
|
ORDER BY
|
|
a.table_name,
|
|
a.ordinal_position;
|