postgresql,oracle,mysql通过数据字典获取表结构

postgresql,oracle,mysql通过数据字典获取表结构,需要schema名跟表名。

postgresql:
 SELECT a.attname,pg_catalog.format_type(a.atttypid, a.atttypmod) AS data_type 
 FROM    pg_catalog.pg_attribute a,
 (SELECT  c.oid
 FROM    pg_catalog.pg_class c 
 LEFT JOIN pg_catalog.pg_namespace n   
 ON n.oid = c.relnamespace 
 WHERE (c.relname) =lower('cxf')
 AND (n.nspname) = lower('public')) b
 WHERE a.attrelid = b.oid
 AND a.attnum > 0
 AND NOT a.attisdropped ORDER BY a.attnum
 
 attname |       data_type       
---------+------------------------
 a       | integer
 b       | character varying(100)
(2 rows)
               
mysql:
 create table dwarch.cxf(a int ,b varchar(100));
 SELECT   COLUMN_NAME,CONCAT(DATA_TYPE,CASE WHEN UPPER(DATA_TYPE) LIKE '%CHAR%' THEN CONCAT ('(',CHARACTER_MAXIMUM_LENGTH,')') ELSE '' END ) AS DATATYPE
 FROM   information_schema.COLUMNS
 WHERE  UPPER(TABLE_SCHEMA)=UPPER('test')
 AND    UPPER(TABLE_NAME)=UPPER('cxf')

+-------------+--------------+
| COLUMN_NAME | DATATYPE     |
+-------------+--------------+
| a           | int          |
| b           | varchar(100) |
+-------------+--------------+


oracle:
SELECT column_name,data_type||CASE WHEN data_type LIKE '%CHAR%' THEN '('||data_length||')' END as data_type
FROM all_tab_columns
WHERE owner=upper('test')
and table_name=upper('cxf')
ORDER BY column_id;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值