Excel에서 SQL Server 2008로 스크립트 작업 대량 복사. 누락 된 행

excel excel-2007 sqlbulkcopy sql-server ssis

문제

현재 SQL 서버의 테이블에 헤더가있는 Excel 워크 시트에서 데이터를로드하고 있습니다. SSIS에서 스크립트 작업을 사용하고 있습니다. 머리글 다음에 첫 번째 행이로드되지 않는다는 점을 제외하면 모든 것이 올바르게 작동합니다. 행을 워크 시트 아래쪽으로 이동하면 올바르게로드됩니다. 어떤 아이디어?

사용중인 코드는 다음과 같습니다.

string excelconnectionstring = "공급자 = Microsoft.ACE.OLEDB.12.0; 데이터 원본 ="+ fullPath + ", 확장 속성 = \"Excel 12.0, HDR = 예, IMEX = 1 \ "";

OleDbConnection oledbconn = 새로운 OleDbConnection (excelconnectionstring); Dts.Variables [ "User :: FileLoaded"]. 값 = 거짓;

        try
        {
            OleDbCommand oledbcmd = new OleDbCommand(exceldataquery, oledbconn);
            oledbconn.Open();
            OleDbDataReader dr = oledbcmd.ExecuteReader();


            SqlBulkCopy bulkcopy = new SqlBulkCopy(sqlconnectionstring);
            bulkcopy.BatchSize = 1000;
            bulkcopy.DestinationTableName = sqltable;

            while (dr.Read())
            {
                bulkcopy.WriteToServer(dr);
            }

            Dts.Variables["User::FileLoaded"].Value = true;
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Data + " " + e.InnerException + " " + e.Message + " " + e.Source);           
            Dts.Variables["User::FileLoaded"].Value = false;
        }
        finally
        {
            oledbconn.Close();
            Dts.TaskResult = (int)ScriptResults.Success;
        }

수락 된 답변

좋아, 그래서 내가 사용하고 있던 방법을 바꾸어서이 문제를 해결했다. 이제 모든 것이 완벽하게 작동합니다.

대신 다음과 같이 데이터 어댑터를 사용했습니다. 이전 코드가 올바르게 작동하지 않는 이유는 여전히 알 수 없습니다.

OleDbDataAdapter 어댑터 = 새 OleDbDataAdapter (exceldataquery, oledbconn); adapter.Fill (dataTable);

            SqlBulkCopy bulkcopy = new SqlBulkCopy(sqlconnectionstring);
            bulkcopy.BatchSize = 1000;
            bulkcopy.DestinationTableName = sqltable;

            bulkcopy.WriteToServer(dataTable);


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