我正在管理一个开发项目,该开发项目从各种数据源(SQL MySQL、Filemaker、Excel)中提取数据,然后安装到具有 10 年记录库的新数据库结构中。显然,我需要在导出之前清理所有这些内容,并且想知道是否有任何应用程序可以为我简化此过程,或者我可以遵循任何指南。
任何帮助都会很棒
最佳答案
我一直这样做,就像 Tom 在 SQl Server 中使用 DTS 或 SSIS 一样,具体取决于最终数据库的版本。
我强烈推荐的一些东西:
在处理收到的所有文件之前将其存档,特别是如果您从外部来源获取此数据,您可能必须研究旧的导入并返回原始数据。归档成功后,将文件复制到处理位置。
特别是对于大文件,获取某种标志文件很有帮助,该文件仅在其他文件完成后才复制,甚至更好,其中包含文件中的记录数。这有助于防止因文件损坏或不完整而出现问题。
保留记录数量的日志,如果文件大小或记录数量可疑,则开始使作业失败。如果您发现更改是正确的,请放入一个无论如何都要进行处理的方法。有时他们确实想将文件切成两半,但大多数时候他们没有。
如果可能的话,获取文件中的列标题。您会惊讶地发现数据源在没有提前警告和中断导入的情况下更改列、列名称或列顺序的频率如此之高。如果您有列标题,则在处理数据之前检查这一点会更容易。
切勿直接导入到生产表。总是最好使用临时表,您可以在将数据放入产品之前检查和清理数据。
记录流程的每个步骤,以便您可以轻松找到导致失败的原因。
如果您要清理大量文件,请考虑创建函数来执行特定类型的清理(例如电话号码格式),然后您可以在多次导入中使用相同的函数。
Excel 文件是邪恶的。查找导入过程中前导零被删除的地方。
我编写流程,以便可以将它们作为测试运行,并在最后进行回滚。这样做比意识到您的开发数据是如此困惑以至于您甚至无法进行有效的测试来确保所有内容都可以转移到生产环境要好得多。
如果没有先在开发环境中进行导入,切勿在生产环境中进行新的导入。当您开始新的导入时,请直接查看记录(当然,如果文件很大,则不是全部记录,但是是一个很好的采样)。如果您认为应该获得 20 列,并且第一次导入为 21 列,请查看最后一列中的记录,很多时候这意味着制表符分隔文件在数据中的某个位置有一个制表符,并且该列数据已关闭记录一下。
不要假设数据是正确的,先检查一下。我的姓氏列中有名字,邮政编码列中有电话等。
检查无效字符、应该只有数字的字符串数据等。
只要有可能,就从提供数据的人那里获取标识符。将其放入链接到您的标识符的表格中。这将使您避免因姓氏更改或地址更改而导致的大量重复记录。
还有更多内容,但这应该让您开始考虑构建流程,通过不导入不良内容来保护公司数据。
关于sql - 清理数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/865386/