-3

私は 2 つのタイプの csv ファイルを持っています。最初のファイルの内容は次のとおりです。

1 13733776062
2 13535581615
3 13987993374
4 13866603331

2 番目のファイルの内容は次のとおりです。

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

各行の最初のファイルの形式は: id number、各行の 2 番目のファイルの形式は:number flagです。それらには関係フィールドがあります: number.

各ファイルには 1000 万行あります。ここで、2 つのファイルを数値フィールドで結合して、各行の 3 つのフィールドを含む新しいファイルを作成したいと考えてid,number,flagいます。これを行うために Java を使用しています。

この作業にかかる時間を短縮するための最良の方法を誰か教えてもらえますか?

4

1 に答える 1

0

これは、Java ではなく SQLite に適したタスクです。次のように実行できます。

$ 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 から新しいデータベースを作成してアクセスすることもできます。

アクセスを高速化するには、適切なインデックスを作成することをお勧めします。

于 2013-11-11T09:03:39.913 に答える