我有一个SQL DB(Postgree),在一个表中有约2000000条记录。而且我有一个〜500000行的CSV文件。我需要检查CSV中的所有记录,如果以前没有将它们添加到DB中。我应该通过name
字段对其进行检查。
我的问题是最快的方法是什么?
谢谢
答案 0 :(得分:0)
name
列上为登台表和目标表建立索引编写如下查询:
INSERT INTO target (column list)
SELECT column list
FROM source
LEFT JOIN target
ON target.name = source.name
WHERE target.name IS NULL
或
INSERT INTO target (<column list>)
SELECT <column list> FROM source
WHERE NOT EXISTS (
SELECT * from target
WHERE target.name = source.name
)