我有兩個文件employee.txt
和salary.txt
。 employee.txt
包含員工詳細信息記錄(如empId, empName , age
),CSV和salary.txt
包含(empId,salary,TDS paid, ...
)。Java文件記錄的交點
我想在第三個文件中寫入兩個文件的共同記錄(基於empId
等於)。我想要在數據庫中操作JOIN
操作的記錄的交集。
我怎樣纔能有效地使用Java(如使用某些集合)這樣做。
我有兩個文件employee.txt
和salary.txt
。 employee.txt
包含員工詳細信息記錄(如empId, empName , age
),CSV和salary.txt
包含(empId,salary,TDS paid, ...
)。Java文件記錄的交點
我想在第三個文件中寫入兩個文件的共同記錄(基於empId
等於)。我想要在數據庫中操作JOIN
操作的記錄的交集。
我怎樣纔能有效地使用Java(如使用某些集合)這樣做。
好吧,一種方法可能是將您的兩個文件的內容加載到您選擇的數據庫系統中。在生成的兩個表上執行SQL JOIN並將結果寫入另一個csv文件。即使沒有Java,這也可能會完成。模擬使用DBMS管理工具,如Mysql的phpMyAdmin。
另一種方式是閱讀這兩個文件,要麼編寫自己的csv「解析器」或使用一些existing one。然後在雙循環中檢查empId上的兩個文件是否相等,並將常用記錄存儲到第三個數組中。與以前一樣,可以將其導出爲csv,無論是手動還是使用您選擇的csv類。
希望這有助於。
運行第一個文件並維護一個散列表,其中關鍵字是empid並且值來自employee.txt。然後在下一步中運行第二個文件。無論您是否擁有這樣的密鑰,都可以使用構建的哈希表中的第二個文件查找中的empid。如果是:從哈希表中獲取值並將其寫入第二個文件的記錄信息中。否:只是跳過記錄。重複,直到第二個文件結束。
Thanx兄弟,我認爲這是我需要的解決方案:) – Chandan 2011-04-11 09:10:20
由於JOIN是數據庫的全部內容,您基本上自己實現(部分)數據庫,爲什麼不使用現有的內存數據庫之一呢?
HSQLDB是我個人的最愛,但也有'H2和Derby(又名JavaDB)。
HSQLDB甚至可以使用您的CSV files directly as tables!
是否僅限於java,或者是否有其他工具向您開放?你當然可以在java中實現這一點,但我認爲它可以在其他語言中更有效地完成。 – crazyscot 2011-04-11 09:00:11
對不起,我只想要一個Java解決方案。 – Chandan 2011-04-11 09:04:43