【发布时间】:2013-06-21 11:24:04
【问题描述】:
我有 2 个文件。第一个文件包含数据库中表的元组的行 ID 列表。 第二个文件在查询的“where”子句中包含带有这些行 ID 的 SQL 查询。
例如:
文件 1
1610657303
1610658464
1610659169
1610668135
1610668350
1610670407
1610671066
文件 2
update TABLE_X set ATTRIBUTE_A=87 where ri=1610668350;
update TABLE_X set ATTRIBUTE_A=87 where ri=1610672154;
update TABLE_X set ATTRIBUTE_A=87 where ri=1610668135;
update TABLE_X set ATTRIBUTE_A=87 where ri=1610672153;
我必须读取文件 1 并在文件 2 中搜索与文件 1 中的行 ID 匹配的所有 SQL 命令,并将这些 SQL 查询转储到第三个文件中。
文件 1 有 1,00,000 个条目,文件 2 包含文件 1 的 10 倍,即 1,00,0000。
我使用了grep -f File_1 File_2 > File_3。但这非常慢,而且速度是每小时 1000 个条目。
有没有更快的方法来做到这一点?
【问题讨论】:
-
是否所有使用文件 1 中提到的行 ID 的查询最终都在同一个输出文件中,或者您希望文件 1 中的每个行 ID 都有一个单独的文件?
-
是否允许对 ID 上的文件进行排序?还是必须保留订单?
-
只有一个输出文件。每次文件 1 中的条目与文件 2 中的条目匹配时,文件 2 中的条目应转储到输出文件中。并且文件 1 和文件 2 中的条目是唯一的。任何文件中都没有重复的行。
-
@fizzer 订单无关紧要。我们可以对其进行排序。
-
您的意思可能是 1,000,000 和 10,000,000 对吧? :-)