导入与导出和数据处理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

导入与导出

熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于函数的详细说明,请参考SQL 联机帮助。利用下述方法,可以十分容易地实现SQLSERVER、ACCESS、EXCEL数据转换,详细说明如下:

在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理;调用命令行工具bcp处理数据;使用数据转换服务(DTS)对数据进行处理。这三种方法各有其特点,下面就它们的主要特点进行比较。

一. 使用数据转换服务(DTS)导入导出数据

DTS是SQL Server中导入导出数据的核心,它除有具有SQL和命令行工具bcp相应的功能外,还可以灵活地通过VBScript、JScript等脚本语言对数据进行检验、净化和转换。

SQL Server为DTS提供了图形用户接口,用户可以使用图形界面导入导出数据,并对数据进行相应的处理。同时,DTS还以com组件的形式提供编程接口,也就是说任何支持com组件的开发工具都可以利用com组件使用DTS所提供的功能。DTS在SQL Server中可以保存为不同的形式,可以是包的形式,也可以保存成Visual Basic源程序文件,这样只要在VB中编译便可以使用DTS com组件了。

1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation 2Services(数据转换服务),然后选择czdImport Data(导入数据)。

3在Choose a Data Source(选择数据源)对话框中选择Microsoft Access as the Source,然后键入你的.mdb数据库(.mdb文件扩展名)的文件名或通过浏览寻找该文件。

4在Choose a Destination(选择目标)对话框中,选择Microsoft OLE DB Prov ider for SQL Server,选择数据库服务器,然后单击必要的验证方式。

5在Specify Table Copy(指定表格复制)或Query(查询)对话框中,单击Copy tables (复制表格)。

6在Select Source Tables(选择源表格)对话框中,单击Select All(全部选定)。下一步,完成。

二. 使用Transact-SQL进行数据导入导出

我们很容易看出,Transact-SQL方法就是通过SQL语句方式将相同或不同类型的数据库中的数据互相导入导出或者汇集在一处的方法。如果是在不同的SQL Server数据库之间进行数据导入导出,那将是非常容易做到的。一般可使用SELECT INTO FROM和INSERT INTO。使用SELECT INTO FROM时INTO后跟的表必须存在,也就是说它的功能是在导数据之前先建立一个空表,然后再将源表中的数据导入到新建的空表中,这就相当于表的复制(并不会复制表的索引等信息)。而INSERT INTO的功能是将源数据插入到已经存在的表中,可以使用它进行数据合并,如果要更新已经存在的记录,可以使用UPDATE。SELECT * INTO table2 FROM table1 --table1和table2的表结构相同INSERT INTO table2 SELECT * FROM table3 --table2和table3的表结构相同当在异构数据库之间的进行数据导入导出时,情况会变得复杂得多。首先要解决的是如何打开非SQL Server数据库的问题。

在SQL Server中提供了两个函数可以根据各种类型数据库的OLE DB Provider打开并操作这些数据库,这两个函数是OPENDATASOURCE和OPENROWSET。它们的功能基本上相同,

(一)、使用openrowset 函数

查看access中的数据

select*from openrowset('Microsoft.Jet.OLEDB.4.0',

'C:\Documents and Settings\Administrator\桌面\教学管

理.mdb';'admin';'',教师表)

(1)/*************导出到Access********************/

insert into openrowset('Microsoft.Jet.OLEDB.4.0',

'x:\A.mdb';'admin';'',A表) select * from 数据库名..B表

insert into openrowset('Microsoft.Jet.OLEDB.4.0',

'C:\Documents and Settings\Administrator\桌面\教学管

理.mdb';'admin';'',book)select*from xsbook.dbo.book

注意:access中的表要有,字段类型与sql中表的一样

/*************导入Access********************/

insert into B表selet * from openrowset('Microsoft.Jet.OLEDB.4.0',

'x:\A.mdb';'admin';'',A表)

原来有表,格式一致

insert into B表select*from openrowset('Microsoft.Jet.OLEDB.4.0', 'C:\Documents and Settings\Administrator\桌面\教学管

理.mdb';'admin';'',教师表)

原来没有表,导入后新建

select*into aa from openrowset('Microsoft.Jet.OLEDB.4.0', 'C:\Documents and Settings\Administrator\桌面\教学管

理.mdb';'admin';'',教师表)

文件名为参数

declare @fname varchar(20)

set @fname = 'd:\test.mdb'

exec('SELECT a.* FROM opendatasource(''Microsoft.Jet.OLEDB.4.0'', '''+@fname+''';''admin'';'''', topics) as a ')

2、导入导出到xls

(1)查询excel中的数据

select*from

OpenRowSet('microsoft.jet.oledb.4.0','Excel

5.0;HDR=yes;database=C:\Documents and Settings\Administrator\桌面

\aa.xls;',stu)

select*from

OpenRowSet('microsoft.jet.oledb.4.0','Excel

5.0;HDR=yes;database=C:\Documents and Settings\Administrator\桌面\论文成绩汇总模板.xls;',原底$)

(2)把excel表导入sql 的基本方法

相关文档
最新文档