如何解决遍历Oracle.LOB XML列表并返回表中的一行
我有以下查询:
import cx_Oracle
connstr = 'str/str@serv'
conn = cx_Oracle.connect(connstr)
cursor = conn.cursor()
cursor.execute("SELECT FILE_CREATION_DATE,FILE_DATA FROM CRS.CRS_FILES WHERE ROWNUM <= 3")
然后我将其放入具有以下代码的列表中:
lst = []
for i in cursor:
for j in i:
lst.append(j)
lst
[<cx_Oracle.LOB at 0x9507bd8>,<cx_Oracle.LOB at 0x9154fb0>,<cx_Oracle.LOB at 0x13c05c0>]
lst[0:len(lst)]
[<cx_Oracle.LOB at 0x9507bd8>,<cx_Oracle.LOB at 0x13c05c0>,'<?xml version="1.0" encoding="utf-8"?><REPORT xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/CrashReport.DataLayer.v20170...,'<?xml version="1.0" encoding="utf-8"?><REPORT xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/CrashReport.DataLayer.v20170...']
有XML(没有全部粘贴)。
我能够通过执行以下操作来解析数据:
plist = []
plist = ''.join(lst[3].read())
import xml.etree.ElementTree as ET
tree = ET.ElementTree(ET.fromstring(plist))
root = tree.getroot()
print(tree.getroot().tag) {http://schemas.datacontract.org/2004/07/CrashReport.DataLayer.v20170201}REPORT
vehicle_elements = root.findall('.//*')
for child in vehicle_elements:
data = print("Tag: {0} text: {1}".format(child.tag,child.text,child.attrib))
Tag: {http://schemas.datacontract.org/2004/07/CrashReport.DataLayer.v20170201}ACRSREPORTTIMESTAMP text: 2017-10-09T10:50:02.04166
Tag: {http://schemas.datacontract.org/2004/07/CrashReport.DataLayer.v20170201}AGENCYIDENTIFIER text: Milwaukee
Tag: {http://schemas.datacontract.org/2004/07/CrashReport.DataLayer.v20170201}AGENCYNAME text: Milwaukee Police Department
Tag: {http://schemas.datacontract.org/2004/07/CrashReport.DataLayer.v20170201}APPROVALDATA text: None
...
这是我的问题
如您所见,xml解析/ ET操作仅执行lst
中的第一行。
我如何遍历lst中的所有CLOB(它至少适用于上面的一行),然后将所有已处理的数据(上面的最终输出)输出到一个表中,其中每一列都是一个标记,并且每一行包含lst
中的一个元素及其对应的值(基于其所在的tag
列)
我想将其输出为CSV,一次完成以上所有行,或者使用其他基于性能的选项将是最好的,因为有大量这些数据。我只是在对这三行进行测试。
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。