暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

关于Oracle导出到csv文件的脚本-Python程序方法

283

cx_Oracle 是一个用户访问 Oracle 数据库的 Python 扩展模块。它符合Python数据库API 2.0规范,并增加了相当多的内容和几个排除项。

cx_Oracle 已经在Python 3.6到3.9版本中进行了测试。用户可以将cx_Oracle与Oracle 11.2, 12c, 18c, 19c和21c客户端库一起使用。

关于cx_Oracle详情参见:

https://cx-oracle.readthedocs.io/en/latest/index.html


Oracle的官方文档一直是最全的,从高阶的到底层,从数据库、中间件、云计算等无所不包,cx_Oracle的官方文档也是秉承这种风格。


代码如下

import csv
import cx_Oracle
# 建立数据库连接
connection = cx_Oracle.connect(user="wbq", password="Wbq197711",dsn="localhost/orcl2")
curlist = connection.cursor()
# 读取导出配置表
sql = "SELECT a.Step,a.RuleType,a.RuleName,a.TableName,a.ExportSQL,a.CSVFileName FROM ProblemToCSVConfig a"
curlist.execute(sql)
# 获取相关配置信息
for row_data in curlist:
vStep, vRuleType, vRuleName, vTableName, vExportSQL, vCSVFileName=row_data
print('---------------{} 开始导出到 {} 中---------------'.format(vTableName,vCSVFileName))
# 开始写文件
with open(vCSVFileName,'w',newline='') as outputfile:
output = csv.writer(outputfile, dialect='excel')
# 建立新游标
curcsv=connection.cursor()
curcsv.execute(vExportSQL)
colnames=[]
# 生成文件标题
for col in curcsv.description:
colnames.append(col[0])
output.writerow(colnames)
# 生成文件数据
for rowdata in curcsv:
output.writerow(rowdata)
outputfile.close()
print('---------------{} 完成导出到 {} 中---------------'.format(vTableName, vCSVFileName))


之前写过一篇公众号是:Oracle导出文本文件的三种方法

里面提到了一、常见的spool方法;二、UTL_FILE包方法;三、sqluldr2工具

实际上sqluldr2工具最为高效但却不是标准工具,Python程序方法灵活性最高,spool方法最简单但最慢,UTL_FILE需要有服务器目录权限。



文章转载自python与大数据分析,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论