【问题标题】:How to make a Bulk Insert using Oracle Managed Data Acess c#如何使用 Oracle Managed Data Access c# 进行批量插入
【发布时间】:2021-03-03 17:20:55
【问题描述】:

我有一个dynamic list object,我想将BulkInsert 放入我的DB,我正在使用另一个库中的旧OracleBulkCopy 方法,但我不能再使用那个库了没有这个方法。

新库:using Oracle.ManagedDataAccess.Client;

旧库:Oracle.DataAccess.Client

有谁知道无需创建列表或数组即可轻松完成Bulk 的方法?

【问题讨论】:

  • 新库是什么?
  • 只需编辑问题并添加库

标签: c# oracle bulkinsert


【解决方案1】:

Oracle.ManagedDataAccess.Client 库还不支持 BulkCopy。

您可以在以下链接中比较两个库的功能:Oracle Managed Driver Comparison

Related Question

另一种选择是使用Array Binding

例子:

using Oracle.ManagedDataAccess.Client;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string connString = "Data Source=xyz; user id=**; password=**";
            using (var con = new OracleConnection(connString))
            {
                con.Open();
                int[] foos = new int[3] { 1, 2, 3 };
                string[] bars = new string[3] { "A", "B", "C" };

                OracleParameter pFoo = new OracleParameter();
                pFoo.OracleDbType = OracleDbType.Int32;
                pFoo.Value = foos;

                OracleParameter pBar = new OracleParameter();
                pBar.OracleDbType = OracleDbType.Varchar2;
                pBar.Value = bars;

                // create command and set properties
                OracleCommand cmd = con.CreateCommand();
                cmd.CommandText = "insert into test (foo, bar) values (:1, :2)";
                cmd.ArrayBindCount = foos.Length;
                cmd.Parameters.Add(pFoo);
                cmd.Parameters.Add(pBar);
                cmd.ExecuteNonQuery();
            }
        }
    }
}

【讨论】:

  • 我知道,这就是为什么我在使用这个库时要求批量插入,必须是一种方式
  • @LucioZenir 你试过数组绑定吗? Link
  • @Mt.Schneiders -- 您确定阵列绑定可与托管客户端一起使用吗?出于某种原因,我认为这不受支持。我相信你,但我们一直在使用 DevArt,因为我们认为它不受支持。如果不是这种情况,我想切换到 Oracle 客户端。您引用的文章似乎没有以一种方式或另一种方式说明。
  • @Hambone,是的,刚刚测试过,它适用于托管客户端。用一个简单的例子编辑了答案。
  • 太棒了……这些年来。感谢您的跟进。
【解决方案2】:

Oracle.ManagedDataAccess.Client 从 19.10 版本开始支持批量复制 试着用它来插入!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多