我有10mil的CSV文件。记录,我需要检查文件中的所有值是否与SQL DB中的相同。我不需要返回真或假,我还需要知道有多少不匹配(如果有的话)以及哪一个可能不同于某些选择。
我的问题是什么是最快的方法,到目前为止可能手动完成(我已经看到有一个选项可以将csv导入sqlite),但后来我需要以编程方式进行。
我应该从csv创建新数据库,然后与其他数据库一起检查吗?
我想应该通过一些内部/外部联接等来完成。任何想法?
我有一个非常简单的想法,但它不起作用:
select Email_Address from eloqua_export where Email_Address != (select Email_Address
from eloqua_export_duplicate)
它返回了我所有的电子邮件地址,即使它们在两个表中都是相同的......
答案 0 :(得分:1)
!=
比较单个值,因此它只占用子查询的第一行。
要与集合中的所有值进行比较,请使用IN:
select Email_Address
from eloqua_export
where Email_Address not in (select Email_Address
from eloqua_export_duplicate);
select Email_Address
from eloqua_export_duplicate
where Email_Address not in (select Email_Address
from eloqua_export);
答案 1 :(得分:1)
这是我需要的答案:
SELECT * FROM eloqua_export
except
SELECT * FROM eloqua_export_duplicate
它从一个表中选择不在第二个表中的每个记录。这意味着,如果两个表都相同,则返回一个空表。