2014-07-10 26 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

相关问题