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))
里面提到了一、常见的spool方法;二、UTL_FILE包方法;三、sqluldr2工具
实际上sqluldr2工具最为高效但却不是标准工具,Python程序方法灵活性最高,spool方法最简单但最慢,UTL_FILE需要有服务器目录权限。
本文分享自 python与大数据分析 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!