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

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

Barbara Streisand
Barbara Streisandオリジナル
2025-01-15 06:13:44147ブラウズ

How to Update Postgres Rows with Data from a CSV File?

CSV データを使用して Postgres 行を更新する: ステップバイステップ ガイド

このガイドでは、CSV ファイルから取得したデータを使用して既存の Postgres 行を更新する方法について詳しく説明します。 このプロセスには、いくつかの重要なステップが含まれます:

1.一時テーブルの確立

まず、Postgres データベース内に一時テーブルを作成します。 このテーブルは、CSV データのステージング領域として機能します。 テーブル スキーマはターゲット テーブルの構造を反映する必要があります。例:

<code class="language-sql">CREATE TEMP TABLE tmp_x (id int, banana text, apple text);</code>

2. CSVデータのインポート

COPY コマンドを使用して、CSV ファイルの内容を一時テーブルにロードします。 /absolute/path/to/file を実際のファイル パスに置き換えることを忘れないでください:

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

3.アップデートの実行

一時テーブル内のデータを使用して、UPDATE ステートメントを実行してターゲット テーブルを変更します。この例では、一致する banana 値に基づいて 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>

重要な注意事項:

  • アクセス許可: COPY でデータを更新するには、通常、スーパーユーザー権限または適切に割り当てられたロールが必要です (特に Postgres 10 以降)。
  • 非スーパーユーザー向けの代替手段: copy クライアント内の psql メタコマンドは、スーパーユーザー権限を持たないユーザーに代替手段を提供します。
  • パフォーマンスに関する考慮事項: 大規模なデータセットの場合、パフォーマンスを最適化するには、temp_buffers を増やし、一時テーブルのインデックスを作成することが必要になる場合があります。

この方法は、CSV ファイルのデータを使用して特定の Postgres 行を効率的に更新する方法を提供します。

以上がCSV ファイルのデータで Postgres 行を更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。