
msSQL Server数据导入之行为规范
我最早使用的一个关系型 DBMS 就是 Microrim's R:Base 4000. R:Base,与其 PC 竞争对手 dBase 不同的是,它是真正的关系型数据库管理系统,是在 20 世纪 80 年代初作为 NASA RIM(关系信息管理,Relational Information Management)系统的一个 PC 版本开发出来的。而我最欣赏的功能之一是它允许用户在导入过程中查看示例数据。尽管像 bcp、DTS、新的 SQL Server 2005 集成服务这样的工具以及各种移植工具和向导已经将数据导入过程自动化到 SQL Server 之中,但这不意味着我们可以一劳永逸。本月,Ron Talmage 提供一些关于导入数据的非常好的常识性建议。
SQL Server DBA(Database Administrator,数据库管理员)发现他们经常使用 T-SQL 导入和处理数据。为什么呢?因为一些数据传输需要技术成熟的 SQL 所具备的强大功能。最近我刚好完成了另一个数据导入的案例,该案例触动我汇编了一份供我使用的行为规范列表。
确保将载入的原始数据暂存为 varchar 数据类型
源自所谓的旧式系统的原始数据通常以文本格式传送,因此我首先总是将原始数据载入一个单独的暂存数据库。我从不尝试将数据直接载入一个成品数据库。
我做的事情是将所有 原始文本数据载入相应的原始表,表中的列为 varchar 数据类型。(DTS 将自动完成该过程,这样很好。但是,DTS 还会将列命名为 COL001,因此您不用事先提供列名。)varchar 的主要优点是它能够接收任何数据 — 甚至是“坏”数据。如果您尝试从一个没有对用户输入的数据进行严格检查的旧式系统加载数据,那么被忽略的数据或写入异常文件的数据可能比加载的数据还多,如果您不想冒这样的风险,除非接收每一个可能的值。将字符载入 varchar 数据类型的列则可以做到这一点。
在暂存表/列名时不要使用非字母数字字符
您可能无法控制在包含原始数据的表中如何对列进行初始命名,但是我会尝试修改可能包含空格或其他非常规字符的旧式列名。当列名或表名包含非字母数字的字符时,我们必须使用方括号或双引号对其进行分隔。这种代码不但编写起来比较困难,而且可读性较差。
不要在列名中使用关键字
源自旧式系统的数据通常包含能够破坏 SQL 查询的描述性列名。例如,房地产数据可能会包含一个名为 KEY 的列,它用来反映放置在待售房屋上的钥匙箱。然而,KEY 也是 T-SQL 中的一个关键字 (!),如果使用这样的列名,查询操作在直接引用该列名时将失败。因此,最终您必须用方括号或双引号分隔含有关键字的列名。
确保使用正确的数据类型创建一个暂存表
下一步是创建一个或多个额外的暂存表,这些表有“正确的”数据类型。我喜欢使暂存表和目标 OLTP(Online Transaction Processing,联机事务处理)数据库中的目的表具有相同的列名。不管怎样,重要的是原始数据中每列的数据类型在载入暂存时都将执行检查并予以改正。在 SQL Server 表中找到坏数据比在加载失败的外部文件中找到坏数据容易得多。
确保将新列添加到暂存表中
当暂存数据没有相应的列时,您可以添加这些列,然后拆分或合并载入的数据。例如,即使目的表分解出街道名和门牌号,地址仍然可能作为一个简单的字符串载入暂存表。那么您可以在暂存表中添加街道名列和门牌号列,将旧式地址分解为两个列。这样做的优点是,原始数据与新拆分的数据并存,因此您能够通过比较列来测试脚本。
朋友若要转载,采集本站内容,请注明出自www.chinavik.com-中国微(微机)客网(搜集整理不容易)
上一篇:压缩与清除MSSQL数据库日志的技巧 下一篇:常见的几种数据库对象
·本站发布内容均为客观表达作者观点,不代表站长立场,请勿攻击和漫骂
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
网络广告信息
推荐文章
- ·MS SQL SERVER 安装完全图解篇 2008/03/09
- ·msSQL Server 数据库学习入门(五 2008/03/09
- ·msSQL Server 数据库学习入门(四 2008/03/09
- ·msSQL Server 数据库学习入门(三 2008/03/09
- ·msSQL Server 数据库学习入门(二 2008/03/09
- ·msSQL Server 数据库学习入门(一 2008/03/09
- ·常见的几种数据库对象 2008/03/09
- ·msSQL Server数据导入之行为规范 2008/03/09
- ·压缩与清除MSSQL数据库日志的技巧 2008/03/09
- ·mssql2000卸载后不能重新安装的解 2008/03/09
- ·mssql数据库和mysql数据库的区别 2008/03/09
热点资讯
- ·MS SQL SERVER 安装完全图解篇 2008/03/09
- ·msSQL Server 数据库学习入门(五 2008/03/09
- ·msSQL Server 数据库学习入门(四 2008/03/09
- ·msSQL Server 数据库学习入门(三 2008/03/09
- ·msSQL Server 数据库学习入门(二 2008/03/09
- ·msSQL Server 数据库学习入门(一 2008/03/09
- ·常见的几种数据库对象 2008/03/09
- ·msSQL Server数据导入之行为规范 2008/03/09
- ·压缩与清除MSSQL数据库日志的技巧 2008/03/09
- ·mssql2000卸载后不能重新安装的解 2008/03/09
- ·mssql数据库和mysql数据库的区别 2008/03/09

技术支持,建议合作 QQ:在线交谈11753718