电脑安全

您当前的位置:主页 > 电脑安全 >

MSSQL Server 数据导入:行为规范-网络编程

来源:[db:来源]标题:   数据    编辑:电脑技术全能网 时间:2019-09-18 12:30

原标题:MSSQL Server 数据导入:行为规范-网络编程
   中心提醒:我最早应用的一个关联型 DBMS 就是 Microrim's R:Base 4000. R:Base  我最早应用的一个关联型 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 表中找到坏数据比在加载失利的内部文件中找到坏数据轻易很多。  确保将新列增加到暂存表中  当暂存数据没有响应的列时,您能够增加这些列,而后拆分或兼并载入的数据。比方,即便目标表剖析出街道名和门商标,地点依然能够作为一个简略的字符串载入暂存表。那末您能够在暂存表中增加街道名列和门商标列,将新式地点剖析为两个列。如许做的长处是,原始数据与新拆分的数据并存,因而您可能经过比拟列来测试剧本。  确保应用当地正本来测试添补的产物数据  当您预备好要拔出暂存表的数据时,能够起首经过将其拔出制品表的当地正本来测试这些数据。偶然您只要清空表;偶然,您必需添补表。  确保保存产物束缚  在副表上老是保存产物束缚。如许,您就可能测试暂存表数据满意这些束缚的水平。这些束缚包含 NULL、默许值、检讨、主键和外键束缚。起首保障副表列上的 NULL 或 NOT NULL 属性与目的体系的雷同,而后再逐渐检讨其余全部束缚。假如您的测试标明暂存数据拔出进程满意全部束缚,那末您间隔胜利就只要一步之遥了。  确保在一个产物数据正本上测试  固然将导入数据拔出空表将碰到许多潜伏的成绩,然而不会碰到全部的成绩。在经过了全部之前的测试后,确保您将在一个目的数据或制品体系的正本(或最少是一个公道的子集)上测试导入。您可能接受的终极过错范例将由数据设置决议,并且这是此项测试可能检测到的。那末,您就可能在数据库正本中检讨成果,乃至能够将利用顺序重定向到该正本以便进一步测试和考证。【专栏作家 Tom Moreau 弥补说,“应用逐日制品更新数据停止测试能够为数据移植做预备。假如本来的体系没有充足的束缚而新体系有,那末坏数据将进入本来的体系并损坏您的移植。” - Ed.】  假如导入进程至此经过了全部测试,那末您能够曾经预备好停止导入数据了,或许最少能够将导入进程交给品质治理员 (QA, Quality Assurance) 了。