MS Access 테이블에 800000 개의 레코드를 삽입해야합니다. Delphi 2007 및 TAdoXxxx
구성 요소를 사용하고 있습니다. 이 테이블에는 정수 필드 하나, 한 개의 float 필드 및 하나의 문자가있는 텍스트 필드가 있습니다. 정수 필드 (autoinc가 아님) 중 하나에 기본 키가 있고 다른 정수와 float 필드에 두 개의 인덱스가 있습니다.800000 레코드를 MS Access 테이블에 삽입하려면 어떻게합니까?
AdoTable.AppendRecord(...)
을 사용하여 데이터를 삽입하는 것은 사용자가 프로그램에서 새 데이터베이스를 사용하기 시작할 때마다 수행되므로 10 분을 초과합니다. 데이터가 ADO
을 통해 액세스 할 수없는 다른 데이터베이스에서 제공되기 때문에 테이블을 미리 채울 수 없습니다.
insert into table (...) select * from [filename.txt] in "c:\somedir" "Text;HDR=Yes"
을 실행하기 tAdoCommand
개체를 사용하여 약 1 분으로 내려 관리하지만이의 오버 헤드를 좋아하지 않는다.
더 좋은 방법이 있어야한다고 생각합니다.
편집 :
몇 가지 추가 정보: 그것은 대상 컴퓨터 (들) 및 전체 데이터베이스에 추가 설치가 필요하지 않기 때문에
- MS 액세스가 선정되었다 하나 개의 파일에 포함되어 있습니다 쉽게 복사 할 수 있습니다.
- 이것은 단일 사용자 응용 프로그램입니다.
- 데이터는 한 번만 삽입되며 데이터베이스의 수명 동안 변경되지 않습니다. 그러나 테이블에는 다른 데이터베이스의 해당 레코드가 사용자에 의해 처리되었음을 나타내는 플래그로 사용되는 하나의 추가 필드가 들어 있습니다.
- 1 분 은입니다. 최대 3 분이 걸릴 수도 있고 내 솔루션이 작동하지만 너무 복잡해 보였으므로보다 쉬운 방법이 있어야한다고 생각했습니다.
- 일단 데이터가 삽입되면 테이블의 성능이 상당히 좋아집니다.
- Access 데이터베이스로 작업하는 프로그램의 기능을 계획/구현하기 시작했을 때 테이블이 필요하지 않았습니다. 나중에 고객이 다른 기능을 요청했을 때만 나중에 필요할 때가되었습니다. (즉, 항상 그런 것은 아닌가?)
편집 : 내가 지금까지 가지고 모든 해답에서
, 내가 이미 삽입하는 가장 빠른 방법을 가지고 있음을 보인다 Access 테이블에있는 데이터의 양. 모두에게 감사 드리며, 귀하의 도움에 감사드립니다.
얼마나 빨리 필요합니까? 10 분이 소요되었다고 생각하면 가능한 한 빨리 처리 한 것처럼 보입니다. 이제는 1 분만 걸립니다. – Eppz
1 분은 800000 개의 레코드를 삽입하는 데 매우 적합합니다. –
1 분은 상당히 받아 들일 만하지만이 텍스트 파일을 만들지 않고 떠나고 싶습니다. – dummzeuch