ホームページ > データベース > mysql チュートリアル > CSV ファイルから特定の Postgres 行を更新するにはどうすればよいですか?

CSV ファイルから特定の Postgres 行を更新するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-15 07:55:45
オリジナル
627 人が閲覧しました

How to Update Specific Postgres Rows from a CSV File?

CSV データを使用して特定の Postgres 行を更新する

このガイドでは、CSV ファイルのデータを使用して PostgreSQL テーブル内の選択した行を効率的に更新する方法を説明します。 このタスクには COPY および UPDATE コマンドを利用します。

シナリオ:

列「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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート