데이터 가져오기
데이터 가져오기 (Data Import - import)
다른 시스템에서 DuckDB로 데이터를 가져올 때 어떤 방법을 쓰느냐에 따라 성능이 크게 달라져요. 이 페이지에서는 권장하는 가져오기 순서와 피해야 할 방법을 정리해 드릴게요.
권장 가져오기 방법 (Recommended Import Methods)
다른 시스템에서 DuckDB로 데이터를 가져올 때는 몇 가지 고려할 점이 있어요. 다음 순서로 가져오기를 권장해요.
1. DuckDB 스캐너 확장이 지원하는 시스템이면 스캐너를 쓰는 게 좋아요. DuckDB는 현재 MySQL, PostgreSQL, SQLite용 스캐너와 범용 ODBC 스캐너를 제공해요.
2. 데이터 소스 시스템에 벌크 내보내기(bulk export) 기능이 있다면 Parquet 또는 CSV 포맷으로 내보낸 뒤 로드하는 게 좋아요. 데이터를 Parquet 또는 CSV 포맷으로 내보낸 다음, DuckDB의 Parquet 로더나 CSV 로더로 로드해요.
3. 위의 방법이 모두 적용되지 않는다면 DuckDB appender를 고려해 보세요. appender는 현재 C, C++, Go, Java, Rust API에서 사용할 수 있어요.
피해야 할 방법 (Methods to Avoid)
가능하다면 행 단위(tuple-at-a-time) 루프를 피하고 벌크 연산을 쓰세요. 준비된 문(prepared statements)을 쓰더라도 행 단위 삽입을 반복하는 것은 성능에 해로워 로드 시간이 느려져요.
Best practice 데이터가 작지 않다면(100K 행 미만), 루프 안에서 insert를 쓰지 마세요.