合并两个大的csv文件

时间:2013-11-11 08:50:30

标签: csv

我有两种类型的csv文件,第一个文件的内容如下:

1 13733776062
2 13535581615
3 13987993374
4 13866603331

第二个文件的内容如下:

13535581615|1
13733776062|0
13866603331|0
13987993374|1

每行的第一个文件格式为:id number,每行的第二个文件格式为:number flag。他们有一个关系字段:number

每个文件有1000万行。 现在我想将数字字段中的两个文件合并到一个新文件中,该文件包含每行id,number,flag的3个字段。我正在使用Java来执行此操作。

有人能告诉我这项工作消耗时间较短的最佳方法吗?

1 个答案:

答案 0 :(得分:0)

这个任务更适合SQLite,而不适用于Java。你可以这样做:

$ sqlite3 database.db
sqlite> CREATE TABLE table1 (id int, number int);
sqlite> .separator " "
sqlite> .import t1.csv table1
sqlite> CREATE TABLE table2 (number int, flag int);
sqlite> .separator "|"
sqlite> .import t2.csv table2
sqlite> CREATE TABLE mytable AS
        SELECT t1.id, t1.number, t2.flag
        FROM table1 t1, table2 t2
        WHERE t1.number=t2.number;
sqlite> SELECT * FROM mytable;
1|13733776062|0
2|13535581615|1
3|13987993374|1
4|13866603331|0

我希望它能够非常快地用于1000万行。

当然,您可以使用SQLite JDBC从Java创建和访问新数据库。

为了更快地访问,最好创建适当的索引。