下图7-25中汇总了SQL、Server中数据转移的方法。 图7-25
��DTS (Data Transformation Service) 是SQL Server提供的数据转换服务。DTS可以在不同数据库之间移动数据结构、数据、触发器、规则、默认、约束和用户定义的数据类型。但是只有数据结构和数据才可以在不同种类的数据源之间进行传送。 ��(1)数据转换服务(DTS)由三个组件组成: ��● DTS导入向导和DTS导出向导; ��● DTS Package Designer:有经验的用户可以使用DTS Package Designer在多机种数据环境中转换数据和定义复杂的数据工作流,可以简化创建数据仓库的过程; ��● DTS 编程接口:用于创建自定义的应用程序。 ��DTS导入向导 (DTS Import Wizard)可以把别的数据源中数据导入SQL Server,并实现数据格式的转化。 批拷贝程序bcp可以按用户定义的数据格式将SQL Server数据库中的数据拷贝到操作系统文件,或是按操作系统文件拷贝到SQL Server数据库,以便于不同应用程序之间的数据交换。 ��例如,可以使用bcp将SQL Server数据库中的数据按一定格式拷贝到文本文件中,然后调用Microsoft Excel等电子表格软件对数据进行分析。也可以将其它应用程序中的数据按一定格式输出到文本文件中,然后再使用bcp实用程序将这些数据拷贝到SQL Server数据库中。bcp是一个命令行实用程序。bcp只是用来管理数据,不能管理数据库中的表,也不能管理操作系统中的文件。 ��在从操作系统数据文件中向数据库表中导入数据时,在数据库中该表必须存在,其相应的列应该与数据文件中的数据对应。如果数据库中没有相应的表,那么不能使用bcp向数据库中导入数据。为了使用bcp,必须对系统中的表有相应的访问权限:为了从表中把数据拷贝出去,必须有对该表的 SELECT 许可权;为了把数据从系统外部的操作系统文件中拷贝进数据库的表中,必须具有对该表的INSERT 许可权。 ��导入数据操作是动态操作。动态操作的含义是既使有用户正在使用数据库中的数据时,也可以执行数据导入操作。 ��导出数据的操作是静态操作。静态操作的含义是当导出数据时,不允许有其他用户对数据库进行操作。 ��在执行块拷贝时,规则和触发器被忽略了,因此会影响数据库数据的完整性。为了解决这种数据完整性问题,应该把数据从操作系统文件导入到数据库表中的操作分解成两步来做。第一步,把数据从操作系统文件导入到中间表中;第二步,把数据从中间表中传入到目的表中。如图7-26中,中间表的结构与目的表的结构完全一样,但没有相应的规则和触发器。 图7-26 |