.net 从XML到Oracle数据库的批量插入/更新

.net 从XML到Oracle数据库的批量插入/更新,.net,xml,oracle,bulkinsert,bulk-load,.net,Xml,Oracle,Bulkinsert,Bulk Load,我有一个XML,它包含多个表的数据。现在我想在数据库中插入/更新。 如果数据库中已经存在主键,则必须从XML更新记录,否则插入新记录。 注:我有数百万条记录。所以请建议我最好的方法 我的xml将如下所示: <Table1> <Key>1</Key> <Value>Data</value> </Table1> <Table2> <Key>1</Key> <

我有一个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>
预期结果:导入XML后

Table1                              Table2
---------------------               -------------------------
Key      Value                      Key            Value
 1        Data                       1              Data
                                     2              Updated data
注:在表2中,键“2”的值变为“更新数据”,其余记录相同。我有数百万张这样的唱片

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

问候,


Kannan

使用(XMLTABLE)中提供的技术,并结合所述的合并。此解决方案将是纯SQL的,独立于.Net


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

谢谢您的回复。是否有任何方法可以使用DataAdapter更新数据库中的表。(DataAdapter.Update(数据集))。我试过这个。如果我正在插入新记录,它将起作用。但是,如果我想更新现有记录,就不能。请注意,advice.DataAdapter.Update不是执行此操作的“最佳方式”,因为它一次只能插入或更新一条记录(速度较慢)。您必须使用OracleCommand.ExecuteOnQuery才能使用一条合并语句,该语句可以一次插入和更新所有记录(数量级更快)
Table1                              Table2
---------------------               -------------------------
Key      Value                      Key            Value
 1        Data                       1              Data
                                     2              Updated data