簡體   English   中英

將 CSV 導入 postgreSQL 中的表,忽略重復項 - Amazon AWS/RDS

[英]Import CSV to table in postgreSQL ignoring duplicates - Amazon AWS/RDS

我有一個 PostgreSQL 托管在 AWS (RDS) 上。 我創建了幾個表並使用 PgAdmin4 上的“導入/導出”工具將一些 .csv 文件導入到該表中。

每個月我都需要更新表格中的數據,我將通過上傳 .csv 文件來完成。

我現在面臨的問題是:我正在嘗試從 a.csv 文件中的表中插入新數據,但我需要忽略重復值

我在這里找到了一種方法(下面的代碼),但是copy命令在 PgAdmin 上不起作用。 復制僅在我使用導入/導出工具時有效。

CREATE TEMP TABLE tmp_table 
ON COMMIT DROP
AS
SELECT * 
FROM indice-id-cnpj
WITH NO DATA;

COPY tmp_table FROM 'C:/Users/Win10/Desktop/Dados/ID-CNPJ.csv';

INSERT INTO indice-id-cnpj
SELECT *
FROM tmp_table
ON CONFLICT DO NOTHING

這是我對 PostgreSQL 的第一次體驗(除了 uni 的一個主題)。 我可以通過使用 excel 並做一些手工工作來處理這個問題,但我正在尋找一個“長期”解決方案,關於如何使用 .csv 文件繼續更新表格,始終忽略重復項。

提前致謝。

所以,我找到了解決方案。

正如 Adrian 提到的,我不得不使用 psql。

CREATE TEMP TABLE tmp_table AS SELECT * FROM table-name WITH NO DATA;
\copy tmp_table FROM 'C:/Users/Win10/folder/filename.csv' DELIMITER ',' CSV ENCODING 'UTF8' ;


INSERT INTO "table-name" SELECT * FROM tmp_table ON CONFLICT DO NOTHING;
DROP TABLE tmp_table;

由於我使用的是 psql,因此有必要使用命令\copy而不是COPY 此外,每個命令都必須以“;”結尾並且有必要在最后刪除tmp_table

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM