2011-10-06 50 views
1

我們在Visual FoxPro中有一堆實用程序腳本,我們用它來交互式清理/格式化數據。我們希望開始遷移此代碼以利用其他數據庫平臺,如MySQL或SQLite。在SQL/MySQL/PostgreSQL表上執行高級數據清理和格式化的最佳語言/技術是什麼?

例如,我們有一個腳本,我們運行它將名稱和/或地址行轉換爲正確的大寫/小寫。此代碼遍歷整個表並分析/修復每一行。還有其他一些方法,比如解析和標準化地址,甚至是重複檢測...

我們正在考慮將代碼遷移到Python,並可能使用類似SQLAlchemy的東西作爲「中間人」。

在Visual FoxPro中,數據庫/表已集成,因此我們只需打開表並運行命令即可。 MySQL不同之處在於我們需要從中提取數據,然後處理提取的數據,然後更新表。

什麼是最好的方法?

我看到幾個可能性:

1)提取整個數據集要工作,說所有的地址字段,如果這就是我們將要共事,然後更新這一切和寫作這一切回來......

2)提取數據塊設置,從而不會潛在地消耗大量的系統內存...然後更新和寫回

3)生成SQL代碼,也許一個像SQLAlchemy這樣的工具的幫助,它被髮送到服務器並由服務器執行...

4)???還有什麼我沒想到的?

回答

0

看起來好像你試圖一次做幾件事。你可以採取一步一步的方法嗎?或許正在使用正常的常用腳本清理數據。然後將數據庫遷移到MySQL。

如果VisualFoxPro提供了一種將數據庫導出到CSV的方法,則很容易遷移數據庫。然後,您可以直接將該CSV文件導入到MySQL中,而且很少麻煩。這給你兩個功能相同的數據庫。當然,你必須證明他們確實是相同的,這不是太困難,但是很耗時。您可能可以使用SQLAlchemy提供幫助。

當MySQL數據庫是正確的,那就是將清理腳本移植到Python或其他東西並使其工作的時候了。

這就是我要解決這個問題的方法:把它分成幾塊,不要試圖在任何單一步驟中做太多。

HTH

+0

您肯定可以使用VFP導出爲CSV格式。 COPY TO myfile.csv TYPE CSV –

+0

感謝您的回覆。將數據導入MySQL並不是一個真正的問題。這是我最好的處理數據,一旦它在那裏。對於這個問題,對MySQL或SQLite或其他任何數據後端進行批量更新/更改的最佳方法是什麼? –

+0

一種可能性是創建一個到VFP中的MySQL/SQLite數據庫的遠程SQL視圖,然後循環執行更改,根據需要調用TableUpdate。 – stuartd

相關問題