首頁 > 資料庫 > mysql教程 > 如何從 CSV 檔案更新特定的 Postgres 行?

如何從 CSV 檔案更新特定的 Postgres 行?

Linda Hamilton
發布: 2025-01-15 07:55:45
原創
631 人瀏覽過

How to Update Specific Postgres Rows from a CSV File?

使用 CSV 資料更新特定的 Postgres 行

本指南示範如何使用 CSV 檔案中的資料有效更新 PostgreSQL 表中的選取行。 我們將利用 COPYUPDATE 指令來完成此任務。

場景:

想像一個 PostgreSQL 表“tbl”,其中包含“id”、“banana”和“apple”欄位。目標是根據 CSV 檔案中的資訊僅更新特定行的「banana」欄位。

程序:

解決方案涉及以下步驟:

  1. 建立臨時表:

    建構一個臨時表,tmp_x,鏡像「tbl」表的結構:

    <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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板