這個問題有兩個方面。
數據遷移
你的第一個步驟是「定義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託管其數據感到不安。這取決於他們在哪個領域工作,以及信息的敏感性。
來源
2010-03-07 11:25:34
APC
它取決於您選擇哪個RDBMS。 – 2010-03-07 10:31:43
@米蘭:怎麼這樣? – 2012-04-17 09:26:19