【发布时间】:2018-04-11 14:52:05
【问题描述】:
长话短说,我从 SFTP 客户端接收 XML 文件,我需要将这些数据存储在 oracle 数据库中。
我目前正在反序列化 XML 文件并生成一个包含所有值的大型插入语句,但插入此语句需要很长时间(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 语句中附加流或流数据?
额外:我目前正在使用 Dapper 作为 ORM。与 ADO.NET 几乎相同,但更易于阅读。
【问题讨论】:
标签: c# xml plsql dapper xmltable