SQLServer数据导入:行为规范

SQLServer数据导入:行为规范,第1张

SQLServer数据导入:行为规范,第2张

我使用的第一个关系DBMS是Microrim的R:Base 4000。r:基地。与它的PC竞争对手dBase不同的是,它是一个真正的关系数据库管理系统,是在80年代初作为NASA RIM(关系信息管理)系统的PC版开发的。我最喜欢的特性之一是它允许用户在导入过程中查看样本数据。尽管bcp、DTS、新的SQL Server 2005集成服务以及各种迁移工具和向导等工具已经将数据导入SQL Server的过程自动化,但这并不意味着我们可以一劳永逸。这个月,Ron Talmage提供了一些关于导入数据的非常好的常识性建议。

服务器DBA(数据库管理员)发现他们经常使用T-SQL来导入和处理数据。为什么?因为有些数据传输需要成熟SQL的强大功能。最近刚做完另一个数据导入案例,引发我整理了一份行为准则清单供我使用。

确保加载的原始数据临时存储为varchar数据类型。

所谓旧系统的原始数据通常是以文本格式传输的,所以一开始我总是将原始数据加载到一个单独的临时数据库中。我从不尝试直接将数据加载到成品数据库中。

我做的是将所有的原始文本数据加载到对应的原始表中,表中的列是varchar数据类型。(DTS会自动完成这个过程,这很好。但是,DTS还会将列命名为COL001,因此您不必事先提供列名。)varchar的主要优点是可以接收任何数据——甚至是“坏”数据。如果你试图从一个没有严格检查用户输入数据的旧系统加载数据,那么可能会有比加载的数据更多的数据被忽略或写入异常文件。如果你不想冒这样的风险,除非你得到每一个可能的价值。可以通过将字符加载到varchar数据类型的列中来实现这一点。

临时存储表/列名时,不要使用非字母数字字符。

您可能无法控制包含原始数据的表中的列最初是如何命名的,但是我将尝试修改可能包含空单元格或其他非常规字符的旧列名。当列名或表名包含非字母数字字符时,我们必须使用方括号或双引号来分隔它们。这种代码不仅难写,可读性也很差。

不要在列名中使用关键字。

遗留系统中的数据通常包含描述性的列名,这会破坏SQL查询。例如,房地产数据可能包含名为KEY的列,该列用于反映放在待售房屋上的钥匙盒。但是,KEY也是T-SQL(!),如果使用这样的列名,直接引用列名时查询操作会失败。因此,最后必须用方括号或双引号分隔包含关键字的列名。

确保使用正确的数据类型创建临时表。

下一步是用“正确的”数据类型创建一个或多个额外的临时表。我喜欢让临时表与目标OLTP(在线事务处理)数据库中的目标表具有相同的列名。在任何情况下,重要的是,原始数据中每一列的数据类型将在加载到临时存储时被检查和纠正。与未能加载的外部文件相比,在SQL Server表中找到坏数据要容易得多。

确保将新列添加到临时表中。

当临时数据没有相应的列时,可以添加这些列,然后拆分或合并加载的数据。例如,即使目标表分解街道名称和门牌号,地址仍可能作为简单的字符串加载到临时表中。然后可以在临时表中添加街道名称列和门牌号列,并将旧地址分解为两列。这样做的好处是原始数据与新拆分的数据共存,因此您可以通过比较列来测试脚本。

确保使用本地副本来测试填充的产品数据。

当您准备好将数据插入到临时表中时,您可以首先通过将数据插入到完成的表的本地副本中来测试数据。有时候只需要清除空表单;有时候,你得填桌子。

确保保留产品约束。

总是在辅助表上保留产品约束。这样,您可以测试临时表数据满足这些约束的程度。这些约束包括NULL、default、check、primary key和foreign key约束。确保辅助表列上的NULL或NOT NULL属性与目标系统的属性相同,然后逐步检查所有其他约束。如果您的测试显示临时数据插入过程满足所有约束,那么您离成功只有一步之遥。

确保在产品数据的副本上进行测试。

虽然将导入的数据插入空表会遇到很多潜在的问题,但并不是所有的都会遇到。在通过所有前面的测试之后,确保您将在目标数据的副本(或者至少是一个合理的子集)或者完成的系统上测试导入。您可以接收到的最终错误类型将由数据配置决定,这也是该测试可以检测到的。然后,您可以在数据库副本中检查结果,甚至可以将应用程序重定向到副本,以进行进一步的测试和验证。【专栏作家Tom Moreau补充道,“用每日更新的成品数据进行测试,可以为数据迁移做准备。如果原系统没有足够的约束,而新系统有,那么坏数据将进入原系统并破坏您的迁移。”艾德。】

如果导入过程已经通过了到目前为止的所有测试,那么你可能已经准备好导入数据了,或者至少你可以把导入过程交给QA,质量保证)。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » SQLServer数据导入:行为规范

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情