笔者再谈一个自己遇到真实案例。一次笔者在给一个客户导入基础资料的时候,遇到了这一种情况。他们在使用SQL Server数据库之前,采用的是ACCESS数据库。在这个数据库中有一个产品基本信息表,包含产品关键字、产品分类等等。当需要把这个数据库中的内容导入到SQL Server中时,要根据产分类的不同,给产品编号加入不同的前缀。如产品为成品的,则在产品编号前加入P;如果产品为包装材料的,则在原有的产品编号前加入B;若产品的类别为零件的,则加入M等等。此时,笔者就没有对原始的数据源进行更改。而是利用DTS服务在把数据导入到SQL Server数据库之前,利用相关的函数,如字符型数据合并等函数,进行一些格式的调整。所以,数据转换服务的一个好处,就是在不用更改原始数据源的情况下,就可以规范需要导入的数据格式。这在异构数据源相互导入中,非常有用。
笔者另外一个同事也遇到过类似的问题。如他在给用户导入库存表的时候,也要进行一些数据转换。当库存数量大于等于0的时候,则导入的数值就是原来的库存数量。如果原始数据库库存数量小于0的时候,则导入的库存数量就为0。笔者同事在导入的过程中,就简单的编写了一个ActiveX脚本来实现这个需求。在这个脚本中,可以利用IF等函数来进行数据转换,因为这些函数可以应用到专门的转换或者包含条件逻辑。从而可以把记录根据不同的条件逻辑转换为合适的数据或者格式。
所以,在导入数据过程中,如果要对一些数据进行格式或者其他方面的转换,笔者就建议大家采用DTS来转换数据,并导入到数据库中。
三、导入过程中复制数据库对象。
若直接利用ODBC等工具把其他SQLServer数据库中的数据导入到SQLServer数据库中,只能够导入数据,而无法复制数据库表上的对象,如约束、索引、主键等等。而且,对于视图、存储过程、默认值等基于基础表的数据库对象也无法导入进去。
在SQL Server数据库中,数据库管理员可以通过数据库对象复制任务,将对象从数据库的一个实例复制到另外一个。可以传输基本对象,也可以复制某些对象的定义。如果选择了某个对象,则复制对象任务将会自动复制任何相关联的对象,如表湖或者视图等的功能。前提是这些被复制的对象在选定的对象上有外键约束。
但是,利用DTS服务在导入数据的同时,还可以复制数据库对象,可以传输诸如视图、存储过程、触发器、规则、默认值以及用户自定义的数据类型。这是ODBC等数据导入工具所无法实现的功能。若所要复制的数据库对象比较多,数据库管理员还可以通过脚本来复制这些数据库对象。
复制数据库对象在实际工作中很有作用,可以保障数据导入的一致性与完整性。如现在数据库管理员要从其他数据库导入客户信息表。而客户信息表中需要引用联系人信息表与地址信息表两个表。也就是说,客户信息表中有两个字段是这两个表的外键。那么通过复制对象作业,只要复制了这张客户信息表,则数据库会自动复制与其相关的表或者其他数据库对象。而不用数据库管理员再手工的去导入其他相关联的数据。
四、执行一些自动化的操作。
在数据库管理中,数据库管理员很希望数据库能够自动收集信息并将信息发送到用户指定的地点如邮件等等。在数据转换任务中,就提供了一系列类似的工具,来简化数据库管理员的工作。如在DTS组套种,有一个发送邮件的工具。 通过相关的设置,数据库会在包成功或者失败的时候自动发送一个电子邮件给数据库管理员,以提醒他作业是成功还是失败。并且会附上比较详细的信息,以便于数据库管理员进行后续的操作。
数据转换功能中,还包含了一个执行包任务,是的一个包运行另一个作为包步骤。这可以让我们的工作更加的自动化。如在数据库导入过程中,我们可以通过包运行计划,把需要导入的数据表一步步按顺序写入执行包计划中。而让数据库在比较空闲的时候,自动按序导入数据。而数据库管理员不用在旁边指挥。
可见,数据转换服务是功能很强的一项服务。在数据导入与转换的过程中,笔者首推这个工具。特别是在数据量比较大的情况下,这个数据转换服务确实能够起到画龙点睛的作用。
文章来源于领测软件测试网 https://www.ltesting.net/