DataTable보다 많은 행을 만드는 SqlBulkCopy

.net c# csv datatable sqlbulkcopy

문제

SqlBulkCopy를 사용하여 CSV에서 약 66k 행을 가져옵니다. CSV는 DataTable로 가져온 다음 아래의 다음 방법으로 전달됩니다.

데이터베이스에 무한정으로 동일한 행을 복제 (또는 끝에 도달하면 재설정)하는 것 같습니다. 디버그는 약 30 분 동안 실행되었고 DataTable의 각 행을 약 5 번 복제하는 350,000 개의 레코드에 가깝게 만들었습니다.

DataTable의 행 수가 올바른지 확인할 수 있으므로 어떤 아이디어가 누락되어 있어야합니다.

참고 : s.BatchSize를 추가하여 해당 금액을 가져올 수 있기를 바랍니다.

  /*
     * StoreImportedData()
     * This method will store all of the imported data from the datatable to the SQL server database.
     * 
     *  
     */

    private Boolean StoreImportedData(DataTable csvFileData)
    {
        try
        {
            using (SqlConnection dbConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
            {
                dbConnection.Open();
                using (SqlBulkCopy s = new SqlBulkCopy(dbConnection))
                {
                    s.DestinationTableName = "Staging";
                    // Amount of rows to issue in the batch: (currently value is around 60k)
                    s.BatchSize = csvFileData.Rows.Count;
                    s.ColumnMappings.Add("remark", "ReportDate");
                    s.ColumnMappings.Add("ipAddress", "IPAddress");
                    s.ColumnMappings.Add("hostName", "HostName");
                    s.ColumnMappings.Add("macAddress", "MacAddress");
                    s.ColumnMappings.Add("deviceName", "PrinterName");
                    s.ColumnMappings.Add("comment", "CenterCode");
                    s.ColumnMappings.Add("userName", "CustomerCode");
                    s.ColumnMappings.Add("userDisplayName", "CustomerName");
                    s.ColumnMappings.Add("printerBlackTotal", "TPrintBw");
                    s.ColumnMappings.Add("printerColorTotal", "TPrintCol");
                    s.ColumnMappings.Add("copyBlackTotal", "TCopyBw");
                    s.ColumnMappings.Add("copyColorTotal", "TCopyCol");
                    s.ColumnMappings.Add("scanTotal", "TScan");
                    s.ColumnMappings.Add("faxBlackTotal", "TFaxBw");
                    s.WriteToServer(csvFileData);
                }
            }
        }
        catch (Exception e)
        {
            throw new Exception("An error has occured with the import SQL operation: " + e.Message);
        }
        return true;
    }
}

인기 답변

이 시도:

s.WriteToServer(csvFileData.CreateDataReader());


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