복붙노트

[SQL] SqlBulkCopy의와 SQL 테이블에 DataTable에 열을 매핑

SQL

SqlBulkCopy의와 SQL 테이블에 DataTable에 열을 매핑

나는 데이터베이스에 데이터를 추가하기 전에 C #을의 데이터 테이블에 데이터베이스 테이블의 컬럼을 맵핑하는 방법을 알고 싶습니다.

using (SqlBulkCopy s = new SqlBulkCopy(conn))
{
    s.DestinationTableName = destination;
    s.WriteToServer(Ads_api_ReportData);
}

해결법

  1. ==============================

    1.당신은 아마 같은 몇 가지 일을해야합니다

    당신은 아마 같은 몇 가지 일을해야합니다

     public void BatchBulkCopy(DataTable dataTable, string DestinationTbl, int batchSize)
    {
        // Get the DataTable 
        DataTable dtInsertRows = dataTable;
    
        using (SqlBulkCopy sbc = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity))
        {
            sbc.DestinationTableName = DestinationTbl;
    
            // Number of records to be processed in one go
            sbc.BatchSize = batchSize;
    
            // Add your column mappings here
            sbc.ColumnMappings.Add("field1","field3");
            sbc.ColumnMappings.Add("foo","bar");
    
            // Finally write to server
            sbc.WriteToServer(dtInsertRows);
        }    
    }
    

    참조 : 어떻게 SqlBulkCopyColumnMappingCollection를 사용하는? . .

    또한 http://www.codeproject.com/Articles/18418/Transferring-Data-Using-SqlBulkCopy 눈 꺼풀을 실로 꿰매다

  2. ==============================

    2.이것은 내가 그것을 위해이 도우미를 쓴 것과 같은 일반적인 작업이되었다 :

    이것은 내가 그것을 위해이 도우미를 쓴 것과 같은 일반적인 작업이되었다 :

    public static void AutoMapColumns(SqlBulkCopy sbc, DataTable dt)
    {
        foreach (DataColumn column in dt.Columns)
        {
            sbc.ColumnMappings.Add(column.ColumnName, column.ColumnName);
        }
    }
    

    내가 DataTable에 자신을 생성 된 이후, 나는 SQL 테이블과 같은 그 열을 지명했다.

  3. ==============================

    3.SqlBulkCopy의가 만들 때문에, 소스 쿼리 (또는 테이블) 및 대상 테이블의 열이 같은 이름을 가지고 동일한 순서로되어 있다면, 명시 적으로 매핑을 쓸 필요가 없다는 것을 알고 유용 할 수 있습니다 이 기본 순서와 기본 매핑.

    SqlBulkCopy의가 만들 때문에, 소스 쿼리 (또는 테이블) 및 대상 테이블의 열이 같은 이름을 가지고 동일한 순서로되어 있다면, 명시 적으로 매핑을 쓸 필요가 없다는 것을 알고 유용 할 수 있습니다 이 기본 순서와 기본 매핑.

  4. ==============================

    4.ColumnMappings를 사용 :

    ColumnMappings를 사용 :

    s.ColumnMappings.Add("Name", "Name");
    s.ColumnMappings.Add("Address", "Address");
    
  5. ==============================

    5.ColumnMappings 수집에 메소드 추가는 대상 테이블에 소스 테이블에서 열을 매핑 할 수 있습니다. 방법 ColumnMappings.Add은 열을 매핑하는 네 가지 방법을 받아들입니다.

    ColumnMappings 수집에 메소드 추가는 대상 테이블에 소스 테이블에서 열을 매핑 할 수 있습니다. 방법 ColumnMappings.Add은 열을 매핑하는 네 가지 방법을 받아들입니다.

    SqlBulkCopy의 당신이 ColumnMappings 컬렉션에 추가하는 동안 고려해야 할 두 열의 데이터 형식에 매우 엄격하다

  6. from https://stackoverflow.com/questions/17469349/mapping-columns-in-a-datatable-to-a-sql-table-with-sqlbulkcopy by cc-by-sa and MIT license