SQLServer数据库中成批导入数据的几个常用方法

SQLServer数据库中成批导入数据的几个常用方法,第1张

SQLServer数据库中成批导入数据的几个常用方法,第2张

软件项目实施时,数据导入一直是项目人员头疼的问题。如果要将现有库存管理系统中的产品信息导入到ERP系统中,让企业用户手工输入这些信息是不现实的。
其实很多批量导入数据的方法都集成在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中,有一个类似的语句可以实现这个功能。这个语句是:插入到。他的功能是将另一个表中的数据插入到当前表中。如果用户希望将明细表与表格数据合并,可以使用该语句。两者不能混为一谈,否则容易导致数据丢失。
第五,上面两条语句都支持不同类型的兼容数据类型。比如在原标准中,一个字段的数据类型是整数,但是在目的表中,这个字段的数据类型是浮点。只要这两种数据类型兼容,导入时就允许数据库。
第二种方法:使用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函数可以直接使用条件限制语句,例如在打开其他数据库的表或视图时在何处筛选记录。因此,在实际应用中,Openrowset函数是经常使用的。
但是由于它需要用户编写复杂的参数,并且它不能提供复杂的数据校验功能,所以在实际工作中应用并不广泛。在一些小型应用系统中,偶尔也能看到。在一些大型成熟的商业软件中,很少使用这种方法导入数据。
有时候,选择太多,用户不知道如何下手。通常,作者喜欢采用第二种方法。他很直观,可以批量更改和整理数据。但是它的缺点是效率比较低,尤其是Excle软件处理大量记录的时候,速度比较慢。如果这种方法行不通,作者更倾向于使用数据转换。这个操作虽然复杂,但是可以提供更复杂的验证,并且可以修改图形界面中的数据,同时效率高。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » SQLServer数据库中成批导入数据的几个常用方法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情