您现在的位置是:首页 > IT基础架构 > 计算存储 >
数据迁移其实是很难的
摘要这种性质的工作是乏味的,需要格外注重细节。它需要大量的人工数据检验、测试、调试和对部分项目的开发工作的前瞻性的思维。当上述所强调的一切都满足之后,其结果几乎可以保证是值得我们努力的。...
在过去的十年中,我已经经历过了无数次的数据修改任务(一个真正的技术术语)。无论是将一个老的数据库迁移到一处现代化的数据库;还是通过新的加工工具拖动庞大的数据集;又或是无数其他的将数据由一种形式转化成另一种新的形式的任务。类似这样的工作处理频率很高,几乎是每天都有这样的工作内容,而这对于绝大多数人而言都不能不说是相当神奇的,甚至包括相当一部分的IT人员。
让我来花一点点的时间来为大家解释一下这一工作原理吧。
让我们选择一个最恐怖也最为常见的情况:可怕的Excel电子表格制作。曾经有一段时间一家公司决定他们要收集有关的业务流程数据资料,包括库存、销售、客户资料等一系列的数据。由于缺乏适当的工具,相关负责的工作人员只能做了一个Excel电子表格,结果差点疯了:随着时间的推移,成千上万的记录需要进行收集,而Excel电子表格的功能越来越无法满足其需求。最终,该企业决定把这些数据信息放入真实的数据库。他们聘请了一家咨询集团,将这些任务交给专业的人员来处理。
首先要做的第一件事是检查数据本身。在一个完美的世界中,电子表格就像一个数据库,每一格都属于其所在列的分类中——如姓氏、名字、街道、城市,等等。然而,这一方法并不总是奏效的。有时候,我们可能在单独的一行或一列涵盖所有的联系信息,如一列里面需要包含全部的联系信息,如姓名、公司、地址、电话号码,等等。而在下一列则可能是关于最后订单或2012年的销售数据或其他数据。这就提出了一个更具挑战性的问题了。
让我们先来看看这第一种情况,因为它是最简单的。在这第一种情况下,数据是相对干净并经过了良好的组织,它可以导出为CSV文件并通过自定义解析器运行,将其转换成一个数据库。一个好的CSV解析器将把所有这些记录导入到一个数组,可以通过记录插入到新数据库分开记录。在这一过程中,可以对数据进行检查,同时数据可以被修改,以便能够更好地适应新的数据库格式。
例如,我们可能会运行一个电话号码字段的正则表达式,以便将各种不同的电话号码格式转换成一种标准的格式。这需要把所有的特殊字符和格式化的字符在被插入到新的数据库之前串起来。该操作将把诸如(212)555-1212、212-555-1212、2125551212、2125551212、212.555.1212这样的每条记录统一变成(212)555-1212,这样的标准化格式,这将有利于方便数据的读取和搜索。
这样,我们现在可以以我们喜欢的方式重新格式化的电话号码。这就帮助我们摆脱了那种可能遇到的多一位数,或者少一位数的不可能是电话号码的困境。
鉴于我们可以采用更加自由的格式,处理起来也就变得更为方便了。地址的处理是特别挑剔的,因为他们可以用各种不同的方式格式化。我们还需要处理街头各种变幻莫测的街道和城市名称。我们需要确保我们能够正确的处理“Washington,DC,”、“Washington,DC,”和“WashingtonDC”,以及各种古怪的拼写方式,如“Winston-Salem,NC,”、“KingofPrussia,PA,”、“Scranton,Penn.,”、“N.ProvidenceRI,”、“Houston,tx,”、以及“O'Fallon,IL.”。
如果我们不加以特殊的考虑,上述这些各种各样的奇怪的拼写字符都可以访问分析解析器,因为我们不能去除特殊字符。此外,我们不能指望国家或州名的缩写都正好符合某一字段长度。因此,我们需要构造条件表达式,以尽最大努力的明确表达城市和国家实际的名称,甚至包括对美国每一座城市和州数据库的核对。基于这些结果,如果没有明确的标志,我们可能仍然需要手动检查有问题的记录来摆脱困境。
上面所介绍的内容,其实我们刚开始触及表面。我们还需要投入大量的工作来搞清楚每个记录中的城市、州和电话号码信息。我们需要根据不同的内容处理和重复的电子表格中的所有其他领域。
这种混乱是由允许数据项不受约束的自由格式所直接导致的。其对于每家公司所造成的困扰无处不在。当然,其不必是Excel格式的电子表格。其可以是企业自主开发的,能够被访问的数据库,或是任何其他应用程序。除非有相关的排查以保证输入数据的有效性和格式化,这些数据将可能一直是混乱状态。当然,问题的关键是建立一个合适的数据库前端来处理数据的输入:我们可以清理数据,并交给员工们导入数据的正确方式,这无疑将在一个持续的基础上大大增强数据的准确性和可用性。这是使用数据库最为重要的好处之一。
当然,我们不能低估在处理这些类型的数据集方面所做出的努力。目前已开发出来各类工具来简化这一过程,但这些工具并非适合所有情况。虽然他们可能仅仅对于一部分输入的数据是奏效的,但错过的部分,如果处理不当会造成更加麻烦的问题。
这种性质的工作是乏味的,需要格外注重细节。它需要大量的人工数据检验、测试、调试和对部分项目的开发工作的前瞻性的思维。当上述所强调的一切都满足之后,其结果几乎可以保证是值得我们努力的。
使用干净的数据,可以使一切变得更简单。但是不要低估在清理数据这一过程中可能具到的挑战。
(本文不涉密)
责任编辑: