집 >데이터 베이스 >MySQL 튜토리얼 >CSV 파일에서 Postgres 테이블의 행을 효율적으로 업데이트하려면 어떻게 해야 합니까?
CSV 데이터로 Postgres 업데이트 최적화
CSV 파일의 데이터로 Postgres 테이블을 효율적으로 업데이트하는 것은 데이터 관리에 매우 중요합니다. 테이블(id, 바나나, 사과)과 업데이트된 banana
값이 포함된 CSV 파일이 있다고 가정해 보겠습니다. 문제는 banana
열을 수정하지 않고 apple
열만 업데이트하는 것입니다.
효율적인 업데이트를 위해 COPY
및 UPDATE
활용
최적의 접근 방식은 COPY
을 사용하여 CSV를 임시 테이블로 가져온 다음 UPDATE
열을 기반으로 id
을 수행하는 것입니다. 과정은 다음과 같습니다.
<code class="language-sql">CREATE TEMP TABLE tmp_x (id int, apple text, banana text); -- Or see alternative below COPY tmp_x FROM '/absolute/path/to/file' (FORMAT csv); UPDATE tbl SET banana = tmp_x.banana FROM tmp_x WHERE tbl.id = tmp_x.id; DROP TABLE tmp_x; -- Alternatively, it's automatically dropped at the end of the session</code>
임시 테이블 구조가 대상 테이블을 미러링할 때 더욱 효율적인 접근 방식:
<code class="language-sql">CREATE TEMP TABLE tmp_x AS SELECT * FROM tbl LIMIT 0;</code>
tbl
과 동일한 스키마를 사용하여 제약 조건을 생략하고 빈 임시 테이블을 생성합니다.
보안 및 성능 고려 사항
Postgres 11 이전에는 COPY
슈퍼유저 권한이 필요했습니다. 그러나 Postgres 11 이상 버전에서는 향상된 보안을 위해 사전 정의된 역할(예: pg_read_server_files
및 pg_write_server_files
)을 제공합니다.
psql
메타 명령 copy
은 COPY
명령을 로컬로 실행하여 수퍼유저 권한 요구 사항을 우회하는 또 다른 솔루션을 제공합니다.
대용량 CSV 파일의 경우 성능 최적화가 중요합니다. temp_buffers
매개변수를 일시적으로 늘려보세요. 임시 테이블의 id
컬럼에 인덱스를 생성하고 ANALYZE
을 실행하면 쿼리 속도를 더욱 향상시킬 수 있습니다.
위 내용은 CSV 파일에서 Postgres 테이블의 행을 효율적으로 업데이트하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!