2010-03-07 75 views
4

這與我的其他問題有關when to move from a spreadsheet to RDBMS將數據從電子表格遷移到RDBMS的策略是什麼?

決定從Excel書中轉到RDBMS,我打算這麼做。

現有數據鬆散地在工作簿中的兩張紙上構成。第一張包含主要記錄。第二張紙允許額外的數據。

我的目標DBMS是mysql,但我願意提供建議。

  1. 定義RDBMS架構
  2. 定義,比如,網絡服務與數據庫接口,這樣同樣可以用於兩個,UI和遷移。
  3. 從電子表格定義遷移腳本
    • 閱讀各集團的下屬行
    • 使用Web服務
  4. 定義宏/功能應用驗證/約束
  5. 寫入RDBMS /電子表格中的模塊在可能的情況下執行驗證。這將允許在新出現的時候使用現有的系統。與此同時,(我希望)在最終實現這一舉措時,它將減少遷移失敗。

你會遵循什麼策略?

+0

它取決於您選擇哪個RDBMS。 – 2010-03-07 10:31:43

+0

@米蘭:怎麼這樣? – 2012-04-17 09:26:19

回答

1

這個問題有兩個方面。

數據遷移

你的第一個步驟是「定義RDBMS模式」,但你打算走多遠呢?電子表格是非常規範化的,因此有很多重複。你在另一個問題中說「數據結構鬆散,沒有明確的限制」。如果你想將轉換成一個嚴格定義的模式(至少3NF),那麼你將不得不做一些清洗。 SQL是數據操作的最佳工具。

我建議你建立兩個臨時表,每個工作表一個。儘可能鬆散地定義列(基本上是大字符串),以便輕鬆加載電子表格的數據。一旦將數據加載到登臺表中,您可以運行查詢以評估數據質量:

  • 有多少個重複的主鍵?
  • 有多少種不同的數據格式?
  • 什麼是查找代碼?
  • 第二張工作表中的所有行都有第一個父記錄嗎?
  • 代碼格式,數據類型等有多一致?
  • 等等。

這些調查將爲您編寫可用於填充實際模式的SQL提供良好的基礎。

或者可能是因爲數據太無望了,您決定堅持使用兩張表。我認爲這是一個不太可能的結果(大多數應用程序都有一些基礎結構,我們只需要深入挖掘)。

數據加載

最好的辦法是到電子表格導出爲CSV格式。 Excel有一個嚮導來執行此操作。使用它(而不是做Save As...)。如果電子表格包含任何自由文本,您將有句子包含逗號,因此請確保您選擇了一個非常安全的分隔符,如^^~

大多數RDBMS工具都有從CSV文件導入數據的功能。 Postgresql和Mysql是非政府組織的明顯選擇(我認爲成本是一個考慮因素),但SQL Server和Oracle都免費(如果受限制)Express版本。 SQL Server顯然與Excel最好的集成。 Oracle具有一個稱爲外部表的漂亮功能,它允許我們定義一個表格,將數據保存在CSV文件中,無需登臺表。

要考慮的另一件事是Google App Engine。這使用Big Table而不是RDBMS,但可能更適合於鬆散結構的數據。我建議您這麼做,因爲您提到Google Docs是另一種解決方案。 GAE是一個有吸引力的選擇,因爲它是免費的(或多或少,他們開始收費,如果使用量超過一些非常慷慨的門檻),它會解決與其他非政府組織的應用程序共享問題。很明顯,您的組織可能會對Google託管其數據感到不安。這取決於他們在哪個領域工作,以及信息的敏感性。

+0

我甚至沒有想過GAE ... (+:好主意! – Everyone 2010-03-07 18:36:36

0

可能會做比您需要的更多的工作。 Excel電子表格可以保存爲CVS或XML文件,許多RDBMS客​​戶端支持將這些文件直接導入到表格中。

這可能允許您跳過編寫Web服務包裝和遷移腳本。在任何導入過程中,您的數據庫限制仍會正確執行。但是,如果您的RDBMS數據模型或模式與Excel電子表格有很大不同,那麼某些翻譯當然必須通過腳本或XSLT進行。

1

很明顯,你需要創建一個目標數據庫和必要的表結構。 我會跳過Web服務並編寫一個讀取.xls(使用POI庫)的groovy腳本,驗證數據並將其保存到數據庫中。

在我看來,任何更多的參與(網絡服務,圖形用戶界面...)都是不合理的:這些類型的任務非常適合腳本,因爲它們簡潔而且非常靈活,而性能,代碼基礎可伸縮性這在這裏不是什麼問題。一旦你有了一些可行的方法,你就可以在幾分鐘或幾個小時的時間內將腳本改編成任何未來的文檔,而這些文檔可能會遇到不同的數據異常。

這是假設您的數據不是完美的順序,需要過濾和/或清理。或者,如果數據和驗證規則不太複雜,那麼使用像Kettle這樣的可視化數據傳輸工具可能會獲得良好的結果:您只需將.xls定義爲源,將數據庫表定義爲表,一些驗證/過濾規則,如果需要並觸發加載過程。相當無痛。

+0

剛剛更新了這個問題,以澄清爲什麼一個Web服務。 正確完成該Web服務可用於遷移和UI。 採取了更進一步的措施,大多數實現可能會被重用,只需更改另一個電子表格的架構和遷移規則即可。 – Everyone 2010-03-07 10:53:22

相關問題