在SQL Server数据库中成批导入数据四种办法[MSSQL防范]
本文“在SQL Server数据库中成批导入数据四种办法[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在软件项目实施的时刻,数据导入一向是项目人员对比头疼的问题.其实,在sql server中集成了很多成批导入数据的办法.有些项目实施顾问头疼的问题,在我们数据库管理员眼中,是小菜一碟.目前的重点就是,若何让用户理解这些办法,让数据导入变得轻松一些.
第一:利用Select Into语句
若企业数据库都采取的是SQL Server数据库的话,则可以操纵Select Into语句来实现数据的导入.Select Into语句,他的作用就是把数据从别的一个数据库中查询出来,然后加入到某个用户指定的表中.
在利用这条语句的时刻,需求注意几个方面的内容.
一是需求在目的数据库中先成立相关的表.如想把进销存系统数据库(SQLServer)中的产品信息表(Product)导入到ERP系统中的产品信息表(M_Product)中.则前期是在ERP系统的数据库中已经成立了这张产品信息表.
二是这种办法只复制表中的数据,而不复制表中的索引.如在进销存系统数据中的产品信息表中,在产品编号、产种类类等字段上成立了索引.则操纵Select Into语句把数据复制到ERP系统的表中的时刻,只是复制了数据内容的本身,而不会复制索引等信息.
三是这条语句利用具有范围性.普通情形下,这只可以在SQL Server数据库中采取.不过,关于SQL Server差别版本的数据库,如2008大概2003,还都是兼容的.若需求导入的对象数据库不是SQL Server的,则需求采取其他的办法.
四是采取这条语句的话,在目的表中必须不存在数据.不然的话,目的表中的数据会被排除.也就是说,这个语句不支持表与表数据的归并.在SQL Server中,有一条近似的语句,可以实现这个功效.这条语句就是:Insert Into.他的作用就是把别的一张表中的数据插入到当前表中.若用户想要的时表与表数据的归并,则可以采取这条语句.二者不可以混合利用,不然的话,很简单招致数据的丧失.
五是以上两条语句都支持兼容的差别范例的数据范例.如在原标中,某个字段的数据范例是整数型,但是在目的表中这个字段的数据范例则是浮点型,只要这个两个数据范例本来就兼容的,则在导入的时刻,数据库是答应的.
第二:操纵Excel等中间工具举行掌握
固然第一种办法操作起来对比简单,但是其也有一些缺陷.如他只支持同一种范例的数据库;不可以对数据举行过量的干涉等等.普通情形下,若用户原数据精确度对比高,不需求过量的改正便可以直接拿来用的话,则笔者就已采取第一种方法.
但是,若在原数据库中,数据的精确度不是很高,又大概,有很大都据是报废的.总之,需求对原数据库的数据举行整理,才可以利用的情形,笔者不倡议先导入进去,再举行更改.笔者在碰到这种情形时,喜好操纵Excle作为中间工具.也就是说,先把数据中原数据库中导到Excle中.有些数据库,如Oracle数据库,他不支持Excle格局.但是,我们可以把它导为CSV格局的文件.这种文件Excle也可以打得开.
然后,再在Excle中,对记录举行改正.由于Excle是一个很强的表格处理软件,所以,其数据改正,要比在数据库中直接改正来得便利,来得简单.如可以操纵按时间排序等功效,把一些长期不用的记录清楚掉.也可以操纵替换等功效,把一些不标准的字符更改掉.这些本来在数据库中对比复杂的任务,在Excle等工具中都可以轻松的完成.
等到表中的内容改正无误后,数据库管理员便可以把Excle表格中的文件直接导入到SQL Server数据库中.由于SQL Server与Excel是同一个父母生的,所以,他们之间的兼容性很好.在Sql Server中供应了直接从Excel文件中导入数据的工具.
固然这要借助中间工具导入数据,但是,因为其处理起来便利、直观,所以,笔者在大部份时刻都是采取这种方法.
第三:利用数据转换服务导入数据
数据转换服务是SQL Server数据库中供应的一个非常强盛的工具.在SQLServer中,数据转换功效有一个图形用户接口,用户可以在图形界面中导入数据,并对数据举行呼应的编辑.
别的,数据转换服务还支持COM组件的编程接口.这也就是说,在前台利用程序开辟的时刻,可以直接调用数据转换服务.让用户通过前台利用系统,而不用在后台数据库系统举行任何的操作,便可以把数据导入数据库系统中去.在前台对数据库系统举行导入,有一个明显的好处,便可以预先对数据的合理性举行查抄.如可以操纵VB等脚本语言对数据举行查验、净化和一定的转换,以符合目的数据库的需求.
如在员工信息表中的婚姻情况字段,在Oracle数据库系统中,大概是用0大概1来表示婚姻情况.0表示未婚,1表示已婚.而在SQL Server数据库中,则操纵Y大概N来表示婚姻情况.Y表示已婚,N表示未婚.在导入数据的时刻,若直接把Oracle数据库表中的数据导入到SQL Server数据库中,因为婚姻情况这个字段存储的内容范例差别,所以,不可以直接导.碰到这种情形的话,则便可以在导入数据之前,先操纵脚本语言对数据范例举行考证.若不符合要求的,则可以通过脚本语言对数据举行一定的转换,把0转换为N,把1转换为Y等等.
所以,有时刻程序员在开辟前台利用程序的时刻,若要开辟数据导入功效的话,我们都是倡议采取这个数据转换服务.不但有现成的接口,并且,还可以对数据举行考证与一定程度的转换.别的,数据转换服务的数据导入效率非常的高.即便通过前台程序调用,其性能也比其他办法在平等条件下,要高一个档次.并且,随着数据量的增添,数据转换服务的上风会越来越明显.
不过,在前台利用程序调用数据转换服务的时刻,需求注意.数据转换服务供应的COM接口对比复杂,所以,前台程序调用数据转换服务的代码也对比复杂.若再加上一些脚本语言的话,大概处理起来越发的烦琐.故普通只有在大型系统上才会用到这个接口.若数据不多,不然不需求复杂考证与转换的话,操纵这个接口是大刀小用,得不偿失.
第四:异构数据库之间的导入导出
固然第二种、第三种方法都可以完成异构数据库之间数据的导入导出功课.不过,在SQL Server中,还供应了别的一种办理筹划.即直接在SQL Server数据库中衔接到其他范例的数据库上,然后采取Select Into等语句实现数据的导入功课.
在SQL Server中,供应了两个函数可以帮忙我们实现对非SQL Server数据库的衔接.这两个函数辨别为Opendatesource与Openrowset.他们的功效基本相同,只是在细节上有所差别.
如Opendatesource这个函数至可以翻开源数据库的表和视图,而不可以对其举行过滤.若用户只想把源表中的部份数据导入到SQL Server数据库的表中,则不能对源表直接举行过滤.过滤的行动需求在SQL Server数据库中举行.而Openrowset这个函数,可以在翻开对方数据库的表大概视图的时刻,直接操纵Where等条件限制语句对记录进新过滤.为此,在实际利用中,还是Openrowset这个函数利用的频率对比高.
不过由于其需求用户写复杂的参数,并且,又不可以供应复杂的数据考证功效,所以在实际工作顶用的并非很多.在一些小的利用系统中,无意还可以见到其的踪影.在一些大的成熟的商业软件中,很少采取这种方法,对数据举行导入.
有时刻,挑选多了,用户反而不知道若何下手.笔者平常最喜好采取的是第二种处理方法.他对比直观,并且,可以对数据举行成批的更改与整理.但是,其缺陷就是效率对比低,分外是Excle软件关于处理大量记录的时刻,速度对比慢.若这种方法行不通的话,则笔者对比偏向于采取数据转换的处理方法.这个操作起来固然对比复杂,但是,其可以供应对比复杂的考证,并且可以在图形化的界面中对数据举行改正,同时效率也对比高.
以上是“在SQL Server数据库中成批导入数据四种办法[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |