2017-12-22 4 views
0

BulkInsert을 입력하고 DB에 넣으려면 이전 OracleBulkCopy 메서드를 다른 라이브러리에서 사용하고 있었지만 더 이상이 라이브러리를 사용할 수 없습니다. 새로운 lib 나는이 방법이 없다.Oracle Managed Data Acess를 사용하여 대량 삽입하는 방법 C#

새 LIB : using Oracle.ManagedDataAccess.Client;

올드 LIB : Oracle.DataAccess.Client

사람이 그것을 할 목록 또는 배열을 생성하지 않고 Bulk을 할 수있는 쉬운 방법을 알고 있나요?

+0

새로운 LIB는 무엇입니까? –

+0

질문을 편집하고 라이브러리를 추가하십시오. –

답변

2

Oracle.ManagedDataAccess.Client lib는 아직 대량 복사를 지원하지 않습니다.

당신은 folowing 링크 모두 libs와에서 기능을 비교할 수 있습니다 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(); 
      } 
     } 
    } 
} 
+0

그 이유는이 lib를 사용하는 동안 일괄 삽입을 요청하는 이유입니다. –

+0

@LucioZenir 배열 바인딩을 시도 했습니까? [링크] (http://www.oracle.com/technetwork/issue-archive/2009/09-sep/o59odpnet-085168.html) –

+0

예,하지만 작동하지 않습니다 –

관련 문제