2011-04-13 141 views
0

對不起,這個問題可能聽起來很愚蠢,但我需要一些幫助!需要一些幫助!

我的項目是打開一個目錄並列出所有的文件。這些是csv文件。每個文件都打開並且內容被加載到mysql數據庫的表中。

所以我也做了上面的步驟,和我的Java代碼工作正常。例如,我在目錄中有3個文件。當我運行該項目時,3個文件中的每個文件中的值都被加載到mysql表中。

但是當我再次運行該程序,並檢查使用Select語句的數據庫,它讓我看到重複的數據,因此6個文件值被加載。當我再次運行它時,數據庫顯示9個文件。但我不想再次添加文件。

因此,誰能告訴我如何做到這一點,而無需從目錄中刪除已添加的文件。

在此先感謝

+0

我已經包含主鍵。這沒有發生過。我最近做了一些增強:從數據庫中檢索列值並將其顯示在html文件中。從那時起,我的代碼表現出這個問題。所以,我將項目代碼重置爲舊狀態。但問題仍然存在。 – Anu 2011-04-13 07:54:56

+0

「對不起,這個問題可能聽起來很愚蠢,......」甚至更糟糕的是,你忘了問一個問題。(需要說明不是問題。) – 2011-04-13 08:00:49

+0

好吧!真的對不起!!不會重複這個錯誤:) – Anu 2011-04-13 08:03:32

回答

1

在數據庫和物理文件中也有唯一的文件標識符。

檢查這一點,如果它存在,跳過其他執行DB操作

+0

謝謝。你可以請示例代碼幫忙嗎? – Anu 2011-04-13 09:44:00

+0

具體是什麼?數據庫相關或文件IO相關? – 2011-04-13 09:51:34

+0

如何在執行插入操作之前檢查表中是否存在文件名?我有文件名值作爲第二列。會像INSERT INTO TABLE_NAME(「no」,「name」,「add」)WHERE NOT EXISTS(SELECT name FROM TABLE_NAME WHERE name =「」);應該幫助實現這一目標 – Anu 2011-04-13 10:00:48

1

簡單的方法:添加另一個表到數據庫來記錄已經處理這些文件的名稱。

然後,寫一個新的文件的內容到數據庫之前:先檢查這個表,如果文件名已經在名單上。


替代方法:記錄最後一次「運行」的時間戳和所有運行,跳過那些「較舊」的文件。

但無論如何,你必須堅持某種標記的,因爲你需要記住,到目前爲止,你所做的事。

+0

好吧。謝謝你的幫助! – Anu 2011-04-13 10:18:47

0

另一列添加到這是您正在閱讀的文件的文件名錶。因此總共有2列,其中1爲文件名,1爲文件數據。

插入,查詢,使用SELECT語句如果文件名已經閱讀並插入之前。

+0

好的。謝謝你的幫助! – Anu 2011-04-13 10:19:38

0

您可以將其他信息存儲到數據庫中,您已經導入了哪些文件。 您可以在附加表中存儲導入文件的名稱和上次修改-屬性,並在內容 -table中對其進行引用。 根據這些信息,您可以決定從目錄中導入新文件的位置,或僅更新已導入文件的內容。

+0

好的。謝謝你的幫助! – Anu 2011-04-13 10:19:53