2014-07-10 25 views
0

我完成了爲使用codeignter和mysql db的組織創建一個會計web應用程序,並且我剛剛提交給他們,他們喜歡這項工作,但他們問我如何轉移他們的舊手動數據在線上傳到新手上,以便他們的成員能夠看到他們的賬戶餘額和捐款歷史記錄。MySQL:如何將舊數據移動到數據庫

這對我來說是一個主要問題,因爲我的大多數表格都使用「參照完整性」來確保數據同步,並且不支持手動記帳的風格。

我知道很多人在這裏都遇到過這樣的情況,我很想知道收集用戶歷史的最佳方式,而且我也知道這可能被標記爲不是真正的問題,但我真的有問有經驗的人。

我將不勝感激所有答案。謝謝(還有投票)

+0

我們如何手工書寫:筆和紙,Excel電子表格? –

+0

Excel Spreadsheet實際上,但他們使用手動計算,電子表格上沒有公式 – Ramos1116

+0

我在想也許我爲舊數據創建了另一個表格,但這意味着我將不得不返回到我的代碼並從每個餘額計算中包含餘額 – Ramos1116

回答

2

無論是什麼情況,數據轉換都非常具有挑戰性,並且幾乎總是耗時。根據所討論數據的一致性,如果您使用PHP創建轉換程序,則可能會有大約80%的數據會整齊地傳輸。這個轉換代碼本身可能比它的價值更耗時。如果您正在談論成千上萬的記錄,那麼製作該轉換程序可能是一個好主意。任何人可能會建議有一顆銀彈,當然是不正確的。

這裏有幾個建議的步驟:

  1. (可選)導出您的Excel電子表格來訪問。訪問可以幫助您標準化數據,並有適當的工具來幫助您找到以某種方式失敗的記錄。如果需要,您也可以在Access中創建過濾器。如果您熟悉Access,採取這一步的好處是您已經開始將數據轉換爲數據庫。事實上,如果你願意,你也可以import your MySQL database information into Access。這樣做的好處很明顯:您可以創建一個查詢並將兩個單獨的表合併在一起以形成一個表,這可以爲您節省大量編碼。

  2. 導出Access表/查詢到CSV文件(,如果你發現這是矯枉過正,或者如果您沒有訪問,您可以跳過步驟1,只需保存您的.xls或.xlsx文件輸入.csv,這可能需要更多的PHP轉換代碼,但這可能是一個偏好問題,有些人更喜歡儘可能地避免使用Access,如果你通常不使用它,你會浪費時間嘗試學習它只是爲了節省一點時間)。

  3. 利用PHP的內置str_getcsv功能。這會將CSV文件轉換爲PHP數組。

  4. 創建您的自動程序來解析每條記錄。根據列及其要求,您可以接受或拒絕記錄。然後,您可以將數據(例如在this SO answer中完成)導出回CSV。您可以保存兩個不同的CSV文件,一個包含已接受的記錄,另一個包含已拒絕的記錄。

對於被拒絕的記錄,從電子表格轉移時,這些記錄幾乎都是不可避免的,因此您需要採取行動。對你的客戶來說,最簡單的方法可能是讓他們手動將記錄導入數據庫,如果你給他們一個接口來做到這一點,或者 - 可能更簡單,但需要更多來回 - 更新Excel中的記錄符合新系統。

編輯 根據您的問題,這闡明瞭什麼你正在嘗試做更多的光線下的線程(即擁有該是一個公認的貸款每筆交易父),你應該能夠圖謀父字段,即使它不完整,也可以通過爲基於帳戶的每組交易創建父記錄。你可以通過Access,PHP或更可能的組合來實現。

結論 長話短說,數據轉換需要時間。如果你把時間放在前面,那麼從長遠來看維護一系列標準化的信息要容易得多。如果您發現一開始需要的時間較少,那麼從長遠來看,這意味着需要額外的工作,以便隨着時間的推移進行「簡單」修復工作。

同樣,越接近傳統數據以符合您的新數據,您的客戶就越容易執行查詢等。雖然這可能意味着您需要一些手動輸入或你的客戶,最好是充分告知客戶每種方法的優缺點並讓他們決定。我的建議總是在前端投入額外的工作,因爲它總是比長期處理快速修復更便宜,但考慮到現實世界的限制,這並不總是實用的。

+0

謝謝我目前正在進行工作,看看我能做什麼,我會更新... – Ramos1116

相關問題