某种曲线将横纵坐标存储在xml文档中,程序会将XML文档按照BLOB数据类型存入Oracle数据库中。
现在需要将数据从Oracle导出。
尝试以下方法
1. 直接使用PLSQL develpment软件导出csv文件
这种方式导出后,发现BLOB文件只显示(BLOB)字符串,没有数据
2. 使用程序读取Oracle文件将BLOB类型数据导出
一开始打算使用Koa2实现,但是网上对于Koa2操作Oracle数据库文档参考比较少。
后来选择Python,之前处理excel数据也是使用python
1)首先安装cx_Oracle
pip install cx_Oracle
2) 配置Oracle
这次使用连接池的方式
配置数据库名和密码,以及数据库地址:端口/数据库名
pool = cx_Oracle.SessionPool("username", "password",
"localhost:port/db", min=2, max=5, increment=1, encoding="UTF-8")
3)Python代码执行SQL并处理
以下是完成python代码
import cx_Oracle
pool = cx_Oracle.SessionPool("username", "password",
"localhost:port/db", min=2, max=5, increment=1, encoding="UTF-8")
# 从连接池中获取一个连接
connection = pool.acquire()
# 使用连接进行查询
cursor = connection.cursor()
# 需要数据的SQL
sql = """SELECT a.ID, b.ID FROM AA a LEFT outer JOIN BB b ON a.id = b.id left outer join CC c on a.id = c.id where b.id = '11' and rownum <= 10"""
datas = cursor.execute(sql)
i = 0;
for data in datas:
# data[i] i索引根据sql输出的字段,从0开始向后
filename = 'D:\python\' + data[0]
f = open(filename, 'wb') # w模式只能写入字符串,wb可以写入字节
# BLOB是一个一个元素的元组,使用[]将元组内容取出,read()函数读取BLOB字节内容
f.write(data[1].read())
i = i + 1
print('写入第', i, '条数据')
f.close
# print(data[1].read())
print("写入完成")
# 将连接放回连接池
pool.release(connection)
# 关闭连接池
pool.close()
最后:基于以上代码成功将xml文件从Oracle数据库导出,小前端一点点积累后端知识哈。