我有两种类型的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来执行此操作。
有人能告诉我这项工作消耗时间较短的最佳方法吗?
答案 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创建和访问新数据库。
为了更快地访问,最好创建适当的索引。