2011-04-11 69 views
0

我有兩個文件employee.txtsalary.txtemployee.txt包含員工詳細信息記錄(如empId, empName , age),CSV和salary.txt包含(empId,salary,TDS paid, ...)。Java文件記錄的交點

我想在第三個文件中寫入兩個文件的共同記錄(基於empId等於)。我想要在數據庫中操作JOIN操作的記錄的交集。

我怎樣纔能有效地使用Java(如使用某些集合)這樣做。

+0

是否僅限於java,或者是否有其他工具向您開放?你當然可以在java中實現這一點,但我認爲它可以在其他語言中更有效地完成。 – crazyscot 2011-04-11 09:00:11

+0

對不起,我只想要一個Java解決方案。 – Chandan 2011-04-11 09:04:43

回答

0

好吧,一種方法可能是將您的兩個文件的內容加載到您選擇的數據庫系統中。在生成的兩個表上執行SQL JOIN並將結果寫入另一個csv文件。即使沒有Java,這也可能會完成。模擬使用DBMS管理工具,如Mysql的phpMyAdmin。

另一種方式是閱讀這兩個文件,要麼編寫自己的csv「解析器」或使用一些existing one。然後在雙循環中檢查empId上的兩個文件是否相等,並將常用記錄存儲到第三個數組中。與以前一樣,可以將其導出爲csv,無論是手動還是使用您選擇的csv類。

希望這有助於。

+0

在這種情況下,我必須每次檢查第二個文件中的每條記錄,因爲第二個文件可能有也可能沒有存在於第一個文件中的emplId,也可能存在於任何隨機行中。 – Chandan 2011-04-11 09:06:55

+0

嗯,是不是它可能是有效的。但取決於輸入文件中條目的數量以及使用這個小連接工具的頻率,這可能是一個合理的方法。 – pintxo 2011-04-11 09:14:34

1

運行第一個文件並維護一個散列表,其中關鍵字是empid並且值來自employee.txt。然後在下一步中運行第二個文件。無論您是否擁有這樣的密鑰,都可以使用構建的哈希表中的第二個文件查找中的empid。如果是:從哈希表中獲取值並將其寫入第二個文件的記錄信息中。否:只是跳過記錄。重複,直到第二個文件結束。

+0

Thanx兄弟,我認爲這是我需要的解決方案:) – Chandan 2011-04-11 09:10:20

0

由於JOIN是數據庫的全部內容,您基本上自己實現(部分)數據庫,爲什麼不使用現有的內存數據庫之一呢?

HSQLDB是我個人的最愛,但也有'H2Derby(又名JavaDB)。

HSQLDB甚至可以使用您的CSV files directly as tables