SQL 테이블 형식 문제로 C # 대량 복사

c# datagridview sql sqlbulkcopy

문제

C #, .net 4, Visual Studio 2010 및 SQL Server 2008 사용.

현재 NewPeriodPareto 라는 테이블에 다음 열이 있습니다.

  • PG nvarchar (50)
  • 부분 nvarchar (50)
  • 판매 플로트
  • LostSales 플로트
  • 파레토 6 int
  • p6 이미지
  • 파레토 5 int
  • p5 이미지
  • 파레토 4 int
  • p4 이미지
  • 파레토 3 정수
  • p3 이미지
  • CurrentPareto int
  • pNew Image
  • NewPareto int

다음은 테이블을 채우기 위해 시도한 코드입니다.

private void CreateNewPeriod()
{
        DataSet dsDG = new DataSet();
        DataTable dt = new DataTable();

        dsDG = (DataSet)ParetoGrid.DataSource;
        dt = dsDG.Tables[0];

        string ThetableName = "NewPeriodPareto";
        BulkInsertDataTable(myConn, ThetableName, dt);
}

public static void BulkInsertDataTable(string connectionString, string tableName, DataTable table)
{
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlBulkCopy bulkCopy =
                new SqlBulkCopy
                (
                connection,
                SqlBulkCopyOptions.TableLock |
                SqlBulkCopyOptions.FireTriggers |
                SqlBulkCopyOptions.UseInternalTransaction,
                null
                );

            bulkCopy.DestinationTableName = tableName;
            connection.Open();

            bulkCopy.WriteToServer(table);
            connection.Close();
        }
}

보시다시피 제공된 코드가 내 데이터 테이블에서 데이터를 복사하려고 시도합니다. 데이터 테이블은 내 데이터 표 소스에 바인딩됩니다.

다음과 같은 오류가 발생합니다.

@ bulkCopy.WriteToServer (table);
데이터 소스의 Int32 유형에 지정된 값을 지정된 대상 열의 이미지 유형으로 변환 할 수 없습니다.

이제 내가 생각한 첫 번째 것은 SQL 테이블의 내 필드 중 하나에 잘못 설정된 유형이 있었지만 여러 번 확인한 후에 아무 문제가없는 것 같습니다.

따라서 필자는이 작은 문제에 대한 해결책, 또는 동일한 목표를 달성하기위한 대안 / 간단한 방법, 즉 프로그램 DataTable에서 SQL 테이블을 채우는 것입니다.

수락 된 답변

[시간이 없어서, 당신에게 힌트를 남겨줄거야]

SqlBulkCopy의 ColumnMappings을 조사해야합니다. 이렇게하면 소스 열을 대상에 명시 적으로 매핑 할 수 있습니다. 현재 ID 또는 유사 항목과 같은 몇 가지 추가 열이있을 수 있습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.