长话短说,我从SFTP客户端收到XML文件,我需要将这些数据存储在oracle数据库中。
我目前正在反序列化XML文件并生成一个包含所有值的大型insert语句,但插入此文件需要永久(120000行为30-50分钟)。
我不想将文件保存在服务器上,所以我宁愿使用FileStream
数据
目前我读了这样的XML文件:
using (SftpFileStream stream = sftp.OpenRead(filename))
{
Xml.Process(stream);
}
所以我想尝试XMLTABLE
插入XML文件。
我们说我还没有为数据创建新表,而是收到了流数据。我有以下XML文件,名为line.xml
:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--Created by a179-main 0.78.24-->
<cern:lines creationDate="2018-03-16T19:36:05" xmlns:cern="http://www.website.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.website.com ../ns/infrastructure.xsd">
<cern:line id="10" validFromDate="1996-06-02" validToDate="2078-12-31"/>
<cern:line id="11" validFromDate="1997-08-03" validToDate="2078-12-31"/>
<cern:line id="12" validFromDate="1997-08-03" validToDate="2078-12-31"/>
</cern:lines>
我如何使用XMLTABLE将其插入数据库?
另外,我创建了哪些表列?
是否可以在XMLTABLE语句中附加stream或streamdata?
额外:我目前正在使用Dapper作为ORM。与ADO.NET几乎相同,但更容易阅读。
答案 0 :(得分:0)
创建CLOB列并将XML存储在其中。
此致 何塞。