2012-03-02 5 views
1

오전,DataTable 행 한도

다음 인용문과 관련하여이 제한은 열 수와 관계가 있습니까? (필자가 가정하지는 않았지만 특별히 명시하지 않은 곳). 열의 수와 연결되어 있다면이 한도를 초과하지 않는 것을 어떻게 계산합니까?

DataTable에 행을 추가하려면 먼저 NewRow 메서드를 사용하여 새 DataRow 개체를 반환해야합니다. NewRow 메서드는 테이블의 DataColumnCollection에 정의 된 것처럼 DataTable의 스키마가있는 행을 반환합니다. DataTable이 저장할 수있는 최대 행 수는 16,777,216입니다. 자세한 내용은 DataTable에 데이터 추가를 참조하십시오. 당신의 도움에 대한

"Link to where quote was taken from."

감사합니다.

+0

나는 또한 가정합니다. 각 DataRow는 별도의 객체이므로 DataTable의 구조는 해당 DataTable의 내용과 거의 무관합니다. –

답변

5

필자는이 제한 (2)이 열의 개수와 독립적 일 것으로 기대합니다. 내부적으로 하나의 32 비트 정수는 24 비트로 행 수를 나타내는 데 사용되며 8 비트는 플래그 또는 이와 유사한 것으로 사용됩니다. 실제로

16 백만 행은 그 한계를 타격의 위험에 있다면, 당신은 아마 '그 방법을 다시 생각해야 ... 채울 수 시간과 메모리의 많은 걸릴 것입니다 데이터를 다시 액세스하여 시작합니다.

+0

답장을 보내 주셔서 감사합니다. 나는 대량 복사를 통해 SQL Server에 텍스트 파일의 데이터를 업로드하기 위해 Datatable을 사용할 계획이었습니다. 나는 업로드 할 데이터의 양이이 한계를 초과 할 것이므로 몇 가지 작업 중 datatables를 나눠서 + 각 작업 datatable이이 제한을 초과하지 않았는지 확인하려고했습니다. 위의 방법이 좋지 않습니까? –

+0

@HansRudel : 솔직히 말해서 데이터를 더 적은 수의 행으로 분할합니다. 나는 SQL Server 대량 복사를 직접 사용하지는 않았지만 만약 당신이 (말하자면) 100,000 행의 섹션으로 나누면 일반 피드백 등을 표시하는 것이 더 쉬울 것이라고 기대한다. –

+1

@HansRudel -이 작업을 위해 C#을 사용할 필요조차 없습니다. SQL Server는 직접 CSV 가져 오기 기능을 제공합니다. – Hogan

0

메모리에 상한이있는 경우를 제외하고는 열 수에 연결되어 있지 않으므로 열이 너무 많아 메모리에 행을 저장할 수 없으면 메모리 부족 오류가 발생할 수 있습니다.

+0

해명 해 주셔서 감사합니다. –

0

새 행을 추가하기 전에 DataTable.Rows.count를 사용하여 현재 행 수를 확인할 수 있습니다.

+0

이것은 질문과는 아무런 관련이 없습니다. – Hogan