使用Python导出Oracle数据库数据表目录

### Oracle数据库数据表目录导出
### 导入包
import pandas as pd
import cx_Oracle

### 数据库信息
username = 'xxx'
password = 'yyy'
ipaddr = '100.28.60.132'
port = '1521'
service_name = 'service_name'
connect_string=ipaddr+":"+port+"/"+service_name

### 创建连接
con = cx_Oracle.connect(username,password,connect_string)
print('创建连接成功!')

### 脚本1-获取表目录信息
sql_tab_list='select row_number() over(order by null) 序号,\
       a.table_name 数据库表名,\
       replace(nvl(a.comments,a.table_name),'+"'/'"+') 数据项,\
       b.num_rows 数据量\
  from user_tab_comments a, user_tables b\
 where a.table_name = b.table_name'

df_tab_list=pd.read_sql(sql_tab_list,con)
print('表目录信息获取成功!')


### 脚本2-获取表字段明细信息
sql_columns_detail='select c.comments 表名,\
       a.table_name 表,\
       a.column_name 字段,\
       a.data_type 字段类型,\
       a.data_length 字段长度,\
       b.comments 字段名称,\
       count(*) over(partition by a.table_name) 总字段数\
  from user_tab_columns a, user_col_comments b, user_tab_comments c\
 where a.table_name = b.table_name\
   and a.column_name = b.column_name\
   and a.table_name = c.table_name\
 order by c.table_name, a.column_id'

df_columns_detail=pd.read_sql(sql_columns_detail,con)
print('表字段明细信息获取成功!')

### 关闭数据库连接
con.close()

### 数据写入excel
writer = pd.ExcelWriter('xxx数据目录导出.xlsx')
df_tab_list.to_excel(writer,sheet_name='数据目录',index=False)
print('\t导出 数据目录')
for tab_name in df_tab_list.数据库表名.unique():
    df_tmp=df_columns_detail[df_columns_detail.表==tab_name]
    df_tmp.to_excel(writer,sheet_name=df_tab_list[df_tab_list.数据库表名==tab_name].iat[0,2],index=False)
    print('\t导出 '+df_tab_list[df_tab_list.数据库表名==tab_name].iat[0,2])
writer.close()
print('导出完毕!')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值