如何检查CSV记录是否与SQLite中的相同?

时间:2014-07-28 07:10:23

标签: java sql sqlite csv

我有10mil的CSV文件。记录,我需要检查文件中的所有值是否与SQL DB中的相同。我不需要返回真或假,我还需要知道有多少不匹配(如果有的话)以及哪一个可能不同于某些选择。

我的问题是什么是最快的方法,到目前为止可能手动完成(我已经看到有一个选项可以将csv导入sqlite),但后来我需要以编程方式进行。

我应该从csv创建新数据库,然后与其他数据库一起检查吗?

我想应该通过一些内部/外部联接等来完成。任何想法?

我有一个非常简单的想法,但它不起作用:

select Email_Address from eloqua_export where Email_Address != (select Email_Address   
from eloqua_export_duplicate)

它返回了我所有的电子邮件地址,即使它们在两个表中都是相同的......

2 个答案:

答案 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

它从一个表中选择不在第二个表中的每个记录。这意味着,如果两个表都相同,则返回一个空表。