2013-05-02 40 views
0

我正在爲我的團隊開發一個指標項目。我必須將幾個不同的報告加載到中央存儲庫中,然後創建表格並報告這些數據。將多個CSV文件加載到MySQL中

數據源有:

  1. CSV文件
  2. 的PDF
  3. 特設/手動數據。

我在玩Talend和MySQL。我對如何加載CSV文件有點困惑。我應該擁有一組目錄和一個或多個加載文件的計劃任務嗎?

另一個想法是編寫一個自定義文件處理器,它將根據命名約定加載文件。你怎麼看?

+0

也許我很簡單,但是......爲什麼不使用'load data infile'? – Barranka 2013-05-02 20:19:10

回答

1

「PDF」是複雜的。因爲它是pdf ...「特設/手動數據」需要更多的細節。
但是,如果我們專注於csv,並且只有我是正確的,那麼您的問題才與這些人有關,我會通過編寫一個應用程序來調用mySQL DB中的SP,將完整路徑移交給csv以及任何其他數據,例如表格的「用戶友好名稱」(如果需要)或您希望存儲的任何其他元數據),它使用mySQL Load Data執行導入。
原因是,在導入csv後,「業務邏輯」中可能有很多規則,並且根據不斷變化的業務要求維護應用程序比始終更改數據庫行爲更容易,而且,如果某些事情變得非常糟糕錯誤的我的數據庫將是安全的,只有「導入管理器應用程序」失敗 - 因爲我不需要在我的數據庫所在的同一個系統上既不存儲也不存儲csvs。
DB,關係 DB基本上是關於存儲數據,並基於'集合論'快速檢索數據,而不是關心數據如何進入系統。

所以,想想這些問題,你開始實施任何事情之前:

  • 它被處理後發生了什麼CSV?可以刪除?應移至例如一個「已處理」的文件夾?應該保持/保持原樣嗎?
  • 如果應該留在原來的位置,那麼我應該怎麼做才能知道我已經處理了該文件? (例如設置「準備歸檔」標誌?觸摸「最後修改」日期並將其設置爲1950.01.01?向該文件添加額外屬性?
  • 如果csv導入失敗,我應該怎麼做(例如,無效數據在文件中,或NULL值,它不應該有空值)?顯示錯誤?將csv標記爲不可用?發送電子郵件?移至「processing_failed」文件夾?
  • 如果文件數量在輸入中變大文件夾嗎?
  • 我如何可以輕鬆地更改導入/流程/等,如果業務邏輯變化,或CSV格式的變化?

等。想通過你的所有決定的選項。

我希望我能回答你的問題;)

+0

感謝您的回覆。你提出了一些好的觀點。 CSV將用於數據庫中的不同表格。我的問題更多的是用於加載文件的方法。 – user2344442 2013-05-03 00:41:36

+0

爲此,請按照我的答案中的鏈接 - 使用mysql加載數據;) – 2013-05-03 07:54:37