2013-07-15 3 views
2

많은 스크립트에서 정보를보고하기 위해 sqlite를 사용하고 있으며, 커다란 테이블 데이터 (수백 csv 행)를 먼저 업로드해야합니다. 과거에는 .import가 라인 단위로 삽입하는 것보다 (트랜잭션을 사용하는 경우조차도) 더 빠르다는 것을 알게되었습니다.Perl dbd-sqlite .import 함수와 동일한 기능이 있습니까?

요즘 내 스크립트는 sqlite3 db '.import ....'에 대한 시스템 호출을 수행하는 메소드를 구현합니다. dbd-sqlite .import를 호출 할 수 있는지 궁금합니다. 또는 시스템에서 insert를 계속 호출하는 것이 좋습니다.

PD : dbd-sql에서 .import를 호출하려는 이유는 소프트웨어가 다른 곳에 설치되어있을 때 sqlite3 종속성을 제거하기 위해서입니다.

답변

1

.import은 SQLite 관련 명령이므로 데이터베이스 드라이버와 독립적 인 DBI 방법을 찾을 수 없습니다. 특정 데이터베이스 엔진이 거의 확실하게 동일한 기능을 가지고 있지만, 각각 다르게 구현됩니다 (예를 들어 MySQL의 LOAD DATA INFILE, & 다. 대 SQLite는 .import)

당신이 진정한 엔진의 독립성을 찾고 있다면, 당신은 당신의 데이터를 가져해야합니다 INSERT 쿼리를 통해 가장 단순한 경우에 어느 곳에서나 동등하게 작동 할 수 있습니다. 그러나 실행 시간의 차이가 충분히 큰 경우 가져 오기 기능에 엔진에 구속받지 않는 인터페이스를 작성하고 각 엔진의 특정 가져 오기 명령에 대한 래퍼를 사용하고 현재 활성 데이터베이스 드라이버에서 결정할 필요가 있습니다 (또는 코드에 따라 다른 메소드) 런타임시 호출 할 랩퍼.