我正在尝试编写一个Python脚本,它将遍历行并将它们放入我的数据库中
这是我的xml结构:
Root>
-<SvcNf>
-<PersonNf>
-<PersonList>
-<Row>
<SysName>MI6</SysName>
<ServerDt>2016-10-28 03:00:12 +03:00</ServerDt>
<UID>9457A55E17341AA7ASDEDS057A8BFFF3</UID>
<PersID>007</PersID>
<Emp_name>James Bond</Emp_name>
<EventID>25</EventID>
<EventTXT>Drinking alcohol</EventTXT>
<CauseEventID>03</CauseEventID>
<CauseEventTXT>Martini with vodka</CauseEventTXT>
<EventBegda>2017-10-18</EventBegda>
<EventEndda>2017-10-18</EventEndda>
<AccrualsSum>171.0</AccrualsSum>
<AccrualsProz>0.0</AccrualsProz>
<AccrualsName>Chinees_</AccrualsName>
<OrderNum>P-336</OrderNum>
<Perg>0</Persg>
<Perk>15</Persk>
<Awart/>
</Row>
-<Row>
.....
</Row>
<Row/>
</PersonList>
</PersonNf>
</SvcNf>
</Root>
所以,当我使用这段代码来解析XML时:
^{pr2}$我想要的标称行值是
['MI6','2016-10-28 03:00:12+03:00','9457A55E17341AA7ASDEDS057A8BFF3'等]
[Row2]
[第3行]
现在,它就像: [第1行,第2行,第3行]
[编辑]
所有字符都像Ф
。
治愈它:
tostring(doc.getroot(), 'unicode')
[编辑]
我使用了第二个示例,但现在我有Oracle错误:ORA-01704:string literal太长。在
要使用原始设置,只需添加一个内部列表,然后附加到更大的ResultSet_Py_list,其中每个
<Row>
都保存在嵌套列表中以供数据库插入。在然后运行cx\u Oracle的
^{pr2}$executemany
,其中参数占位符的长度等于列表项的长度:也许有人会帮上忙。它的乞丐回答:) 我使用unicode(俄语符号),我不知道为什么xml不能用Oracle function进行正常的解析。 当我尝试做ALTERNATIVELY WITH NESTED LIST COMPREHENSION时,我的内核和python都死了。在
所以,我从XML生成CSV,然后用ALTERNATIVELY WITH NESTED LIST COMPREHENSION将其插入数据库
考虑使用Oracle的XML处理程序并避免任何嵌套循环:
Rextester演示
要在Python数据库游标(如with cx_Oracle)中实现追加查询:
^{pr2}$对于在SQL中超过Oracle 4000字节的非常大的XML内容,请使用varchar2限制为32767字节的PL/SQL,如@NickS所示here:
相关问题 更多 >
编程相关推荐