cx_Oracle 查询并将数据写入csv
import sys
import csv
import cx_Oracle
def connect_db()
try:
db = cx_Oracle.connect('username/password@ip:port/sid')
cr = db.cursor()
printHeader = True # include column headers in each table output
sql = "select * from tab" # get a list of all tables
curs.execute(sql)
for row_data in curs:
if not row_data[0].startswith('BIN$'): # skip recycle bin tables
tableName = row_data[0]
# output each table content to a separate CSV file
csv_file_dest = tableName + ".csv"
outputFile = open(csv_file_dest,'w')
output = csv.writer(outputFile, dialect='excel')
sql = "select * from " + tableName
curs2 = orcl.cursor()
curs2.execute(sql)
if printHeader: # add column headers if requested
cols = []
for col in curs2.description:
cols.append(col[0])
output.writerow(cols)
for row_data in curs2: # add table rows
output.writerow(row_data)
outputFile.close()
except:
print('database connection faile')
if __name__ == '__main__':
connect_db()
cx_Oracle 中文乱码问题解决
在使用cx_oracle模块读取Oracle数据库中的中文记录时,返回值皆为?号。
oracle数据库版本是10g,字符集是AL32UTF8.
编写的python脚本中需要加入如下两句:
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'