【问题标题】:Bulk Insert/Update from XML to Oracle database从 XML 批量插入/更新到 Oracle 数据库
【发布时间】:2014-08-30 12:52:59
【问题描述】:

我有一个包含多个表数据的 XML。现在我想插入/更新到数据库中。 如果数据库中已经存在主键,则必须从 XML 更新记录,否则插入新记录。 注意:我有数百万条记录。所以请建议我最好的方法来做到这一点。

我的 xml 将如下所示:

<Table1>
    <Key>1</Key>
    <Value>Data</value>
</Table1>
<Table2>
    <Key>1</Key>
    <Value>Data</Value>
</Table2>
<Table2>
    <Key>2</Key>
    <Value>Updated data</Value>
<Table2>

现有数据库:

Table1                              Table2
---------------------               -------------------------
Key      Value                      Key            Value
 1        Data                       1              Data
                                     2              Data

预期结果:导入 XML 后

Table1                              Table2
---------------------               -------------------------
Key      Value                      Key            Value
 1        Data                       1              Data
                                     2              Updated data

注意:在Table2中,Key“2”的Value变为“Updated data”,其余记录相同。我有数百万条这样的记录。

如何在使用 .NET 的 Oracle 数据库中实现这一点。请帮忙。提前致谢。

问候,

关南

【问题讨论】:

    标签: .net xml oracle bulkinsert bulk-load


    【解决方案1】:

    this question (XMLTABLE) 中提供的技术与here 所述的MERGE 结合使用。该解决方案将是纯 SQL 并且独立于 .Net。

    您必须为每个表编写一个语句,并且您必须对所有列名进行硬编码(这对 IMO 来说很好)。

    【讨论】:

    • 感谢您的回复。有什么方法可以使用 DataAdapter 来更新数据库中的表。 (DataAdapter.Update(Dataset))。我试过这个。如果我要插入新记录,它就可以工作。但不是,如果我想更新现有记录。请指教。
    • DataAdapter.Update 不是执行此操作的“最佳方式”,因为 AFAIK 一次只能插入或更新一条记录(慢)。您必须使用 OracleCommand.ExecuteNonQuery 才能使用 MERGE 语句,该语句可以一次插入和更新 所有 记录(幅度更快)
    猜你喜欢
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    相关资源
    最近更新 更多