将 CSV 导入 postgreSQL 中的 table,忽略重复项 - Amazon AWS/RDS
Import CSV to table in postgreSQL ignoring duplicates - Amazon AWS/RDS
我在 AWS (RDS) 上托管了一个 PostgreSQL。我已经创建了几个 tables 并使用 PgAdmin4 上的“Import/Export”工具向这个 tables 导入了一些 .csv 文件。
每个月我都需要更新 table 上的数据,我将通过上传 .csv 文件来完成。
我现在面临的问题是:我正在尝试从 .csv 文件向 table 插入新数据,但我需要忽略重复值.
我找到了一种方法 here(下面的代码),但是 copy
命令在 PgAdmin 上不起作用。复制只有在我使用 import/export 工具时才有效。
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 文件继续更新 tables , 始终忽略重复项。
提前致谢。
所以,我找到了解决方案。
正如 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
。
我在 AWS (RDS) 上托管了一个 PostgreSQL。我已经创建了几个 tables 并使用 PgAdmin4 上的“Import/Export”工具向这个 tables 导入了一些 .csv 文件。
每个月我都需要更新 table 上的数据,我将通过上传 .csv 文件来完成。
我现在面临的问题是:我正在尝试从 .csv 文件向 table 插入新数据,但我需要忽略重复值.
我找到了一种方法 here(下面的代码),但是 copy
命令在 PgAdmin 上不起作用。复制只有在我使用 import/export 工具时才有效。
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 文件继续更新 tables , 始终忽略重复项。
提前致谢。
所以,我找到了解决方案。
正如 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
。