Data structures 算法-如何使用一个文件中的数据作为搜索/删除其他文件的标准?

Data structures 算法-如何使用一个文件中的数据作为搜索/删除其他文件的标准?,data-structures,delimited-text,Data Structures,Delimited Text,我有两个不同的管道分隔数据文件。一个比另一个大。我试图根据小文件(文件B)中包含的数据,有选择地从大文件(我们称之为文件A)中删除数据。文件A包含所有数据,文件B仅包含文件A中的一部分数据 我想要一个从文件a中删除文件B中包含的所有数据的函数或现有程序。我想到了这样一个函数: Pseudo-code: while !eof(fileB) { criteria = readLine(fileB); lineToRemove = searchForLine(

我有两个不同的管道分隔数据文件。一个比另一个大。我试图根据小文件(文件B)中包含的数据,有选择地从大文件(我们称之为文件A)中删除数据。文件A包含所有数据,文件B仅包含文件A中的一部分数据

我想要一个从文件a中删除文件B中包含的所有数据的函数或现有程序。我想到了这样一个函数:

Pseudo-code:

    while !eof(fileB) {
        criteria = readLine(fileB);
        lineToRemove = searchForLine(criteria, fileA);
        deleteLine(lineToRemove, fileA);
    }
然而,这个解决方案对我来说似乎效率很低。文件A有23000行,文件B有17000行。文件B中包含的数据实际上分散在文件A中


如果有一个程序可以做到这一点,我更喜欢它而不是代码。我对代码也不挑剔。C++是我的强大语言,但是这个数据文件在不久的将来会被转换成SQL数据库,所以我也很好的使用SQL/PHP代码。

< P>将这两个表加载到SQL中,不管数据库。进行这种操作是数据库设计的目的。然后可以执行以下命令:

delete from A
    where A.criteria = (select B.criteria from B)
但是,我会将数据放入临时表中,然后在SQL中创建并填充所需的数据。比如:

create table A ( . . . )

insert into A
    select *
    from StagingA
    where A.criteria not in (select B.criteria from StagingB)
(在这里,我使用了“*”和一个没有列列表的insert。实际上,您应该有列列表。)