SqlBulkCopy를 사용하는 프로젝트의 일부로 IDataReader를 사용하여 클래스를 구현했습니다. 내가 SqlBulkCopy의와 IDataReader에 WriteToServer 방법을 실행IDataReader 구현의 인덱스 값 문제
SqlBulkCopy bulkInsert = new SqlBulkCopy(Constants.DBConnection, SqlBulkCopyOptions.UseInternalTransaction);
bulkInsert.BatchSize = 500;
bulkInsert.DestinationTableName = Constants.DestinationTable;
bulkInsert.WriteToServer(reader);
를 사용하여 관련 여기에 코드
public bool Read()
{
var result = !fileStream.EndOfStream;
if (result)
{
delimRow = fileStream.ReadLine();
splitRowValues = delimRow.Split(_delimiters);
readRowCount++;
}
return result;
}
private string[] Row
{
get { return splitRowValues; }
}
public object GetValue(int i)
{
return Row[i];
}
코드의 일부를 게시, 나는 GetValue()에 대한 첫 번째 호출로 시작 것으로 나타났습니다 색인 값을 1로 지정하고 색인의 최종 값은 열 수보다 작은 값을 갖습니다. 이 문제로 인해 대량로드가 하나의 열을 건너 뛰게됩니다.
GetValue()의 인덱스가 1에서 열 수까지의 값을 가지지 않는 이유를 찾을 수 없습니다. 실제로 값은 0부터 시작하여 열 개수보다 작아야합니다. 아무도 내가 원인을 찾을 수 있도록 도와 주시면 알려주세요.
굉장! 그것이 이유였습니다. 확인하기 위해 ID 열을 제거했으며 이제 인덱스 값은 0에서 시작하여 모든 열을 통과합니다. SqlBulkCopy가 추측 작업을하지 않도록 열 매핑을 추가했습니다. – wired2code