>데이터 베이스 >MySQL 튜토리얼 >CSV 파일에서 특정 Postgres 행을 업데이트하는 방법은 무엇입니까?

CSV 파일에서 특정 Postgres 행을 업데이트하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-15 07:55:45627검색

How to Update Specific Postgres Rows from a CSV File?

CSV 데이터를 사용하여 특정 Postgres 행 업데이트

이 가이드에서는 CSV 파일의 데이터를 사용하여 PostgreSQL 테이블에서 선택한 행을 효율적으로 업데이트하는 방법을 보여줍니다. 이 작업에서는 COPYUPDATE 명령을 활용하겠습니다.

시나리오:

'id', 'banana' 및 'apple' 열이 있는 PostgreSQL 테이블 'tbl'을 상상해 보십시오. 목표는 CSV 파일의 정보를 기반으로 특정 행의 '바나나' 열만 업데이트하는 것입니다.

절차:

해결책에는 다음 단계가 포함됩니다.

  1. 임시 테이블 만들기:

    'tbl' 테이블의 구조를 반영하는 임시 테이블 tmp_x을 생성합니다.

    <code class="language-sql">CREATE TEMP TABLE tmp_x (id int, apple text, banana text);</code>
  2. CSV 데이터 가져오기:

    tmp_x 명령을 사용하여 CSV 파일의 내용을 COPY으로 가져옵니다. /absolute/path/to/file을 실제 파일 경로(

    )로 바꿔야 합니다.
    <code class="language-sql">COPY tmp_x FROM '/absolute/path/to/file' (FORMAT csv);</code>
  3. 메인 테이블 업데이트:

    UPDATE 문을 실행하여 'tbl'의 'banana' 열을 수정합니다. 이는 tmp_x의 데이터를 사용하여 'id' 열을 기준으로 행을 일치시킵니다.

    <code class="language-sql">UPDATE tbl
    SET    banana = tmp_x.banana
    FROM   tmp_x
    WHERE  tbl.id = tmp_x.id;</code>
  4. 임시 테이블 제거:

    업데이트 후 임시 테이블을 제거하세요.

    <code class="language-sql">DROP TABLE tmp_x;</code>

대체 접근 방식:

  • 단순화된 임시 테이블 생성: CSV 파일이 'tbl'의 구조와 일치하는 경우 tmp_x 더 간결하게 생성할 수 있습니다.

    <code class="language-sql"> CREATE TEMP TABLE tmp_x AS SELECT * FROM tbl LIMIT 0;</code>
  • 수퍼유저 권한 방지: 수퍼유저 권한이 없는 COPY 작업의 경우 psql 메타 명령을 사용합니다.

    <code class="language-sql"> \copy tmp_x FROM '/absolute/path/to/file' (FORMAT csv);</code>

유용한 링크:

위 내용은 CSV 파일에서 특정 Postgres 행을 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.