使用TLSQL实现导出导出支持EXCLE的导入导出.docx

上传人:b****5 文档编号:7717572 上传时间:2023-01-26 格式:DOCX 页数:11 大小:21.79KB
下载 相关 举报
使用TLSQL实现导出导出支持EXCLE的导入导出.docx_第1页
第1页 / 共11页
使用TLSQL实现导出导出支持EXCLE的导入导出.docx_第2页
第2页 / 共11页
使用TLSQL实现导出导出支持EXCLE的导入导出.docx_第3页
第3页 / 共11页
使用TLSQL实现导出导出支持EXCLE的导入导出.docx_第4页
第4页 / 共11页
使用TLSQL实现导出导出支持EXCLE的导入导出.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

使用TLSQL实现导出导出支持EXCLE的导入导出.docx

《使用TLSQL实现导出导出支持EXCLE的导入导出.docx》由会员分享,可在线阅读,更多相关《使用TLSQL实现导出导出支持EXCLE的导入导出.docx(11页珍藏版)》请在冰豆网上搜索。

使用TLSQL实现导出导出支持EXCLE的导入导出.docx

使用TLSQL实现导出导出支持EXCLE的导入导出

使用T-SQL实现数据导出\导入(SQLSERVER—>SQLSERVER)

2007-07-1016:

12:

08

标签:

数据Transact-SQL

今天尝试使用Transact-SQL进行数据的导出导入,收获颇丰。

与使用DTS相比,效率要高很多!

 

一、打开OPENDATASOURCE功能

开始—>

所有程序 —>

MicrosoftSQLServer2005 —>

配置工具 —>

SQLServer外围应用配置器 —>

功能的外围应用配置器 —>

实例名 —>

DatabaseEngine —>

即席远程查询 —>

启用OpenRowset和OpenDatasource支持。

 

否则,会报错:

消息15281,级别16,状态1,第1行

SQLServer阻止了对组件'AdHocDistributedQueries'的STATEMENT'OpenRowset/OpenDatasource'的访问,因为此组件已作为此服务器

 

安全配置的一部分而被关闭。

系统管理员可以通过使用sp_configure启用'AdHocDistributedQueries'。

有关启用'AdHocDistributed

Queries'的详细信息,请参阅SQLServer联机丛书中的"外围应用配置器"。

 

二、打开远程连接

 

开始—>

所有程序 —>

MicrosoftSQLServer2005 —>

 配置工具 —>

SQLServer外围应用配置器 —>

服务和连接的外围应用配置器 —>

实例名 —>

DatabaseEngine —>

远程连接 —>

本地连接和远程连接  —>

仅使用TCP/IP  —>

应用 —>

 重新启动数据库引擎

否则,会报错:

链接服务器"(null)"的OLEDB访问接口"SQLNCLI"返回了消息"登录超时已过期"。

链接服务器"(null)"的OLEDB访问接口"SQLNCLI"返回了消息"建立到服务器的连接时发生错误。

连接到SQLServer2005时,默认设置

SQLServer不允许远程连接这个事实可能会导致失败。

"。

消息65535,级别16,状态1,第0行

SQL网络接口:

从注册表获取已启用的协议列表时出错[xFFFFFFFF].

 

三、打开客户端TCP/IP协议

开始—>

所有程序 —>

MicrosoftSQLServer2005 —>

配置工具 —>

SQLServerConfigurationManager —>

SQLServer2005网络配置:

启用TCP/IP协议

SQLNativeClient 配置:

启用

                                              默认端口-1433

 

四、创建联接服务器

execsp_addlinkedserver@server='conndb04',

                       @provider='sqloledb',

                       @srvproduct='',

                       @datasrc='WINNIE\IIDC'

execsp_addlinkedsrvlogin@rmtsrvname='WINNIE\IIDC',

                         @useself='false',

                         @locallogin='admin',

                         @rmtuser='admin',

                         @rmtpassword='password';

 

[注]这里的login帐户,应该是使用SQLServer身份验证的帐户,否则,会报错:

xx用户无法登陆。

 

五、在导入目标数据库中创建空表

       usewwww

       go

       createtablepro_unit_sort(

       CulIDvarchar(40),

       Coll_Unitvarchar(400),

       cul_Sortvarchar(400))

 

六、执行导出\导入

select*intowwww.dbo.pro_unit_sortfromconndb04.wwww_xx..dbo.xx._unit_sort;

 

      [注]

     

      1、第四步和第六步等同于:

      usewwww

      go  

      insertINTOOPENDATASOURCE(

      'SQLOLEDB',

      'DataSource=WINNIE\IIDC;

       UserID=admin;

       Password=password'

       ).wwww.dbo.pro_unit_sort

       select*fromwwww_xx.dbo.xx.unit_sort;

      

      2、执行此操作时,将使用到UDP1434端口,如果防火墙关闭了此端口的话,请将其打开。

否则,会报错:

 

链接服务器"(null)"的OLEDB访问接口"SQLNCLI"返回了消息"登录超时已过期"。

链接服务器"(null)"的OLEDB访问接口"SQLNCLI"返回了消息"建立到服务器的连接时发生错误。

连接到SQLServer2005时,默认设置

SQLServer不允许远程连接这个事实可能会导致失败。

"。

消息65535,级别16,状态1,第0行

SQL网络接口:

从注册表获取已启用的协议列表时出错[xFFFFFFFF].

 

参考文档:

1、使用Transact-SQL进行数据导入导出方法详解:

  

 

2、SQLServer的链接服务器技术小结

  

如何将数据从Excel导入到SQLServer

查看本文应用于的产品

本页

概要

o

技术说明

o

要求

o

示例

导入与追加

使用DTS或SSIS

使用链接服务器

使用分布式查询

使用ADO和SQLOLEDB

使用ADO和JetProvider

o

疑难解答

参考

展开全部|关闭全部

概要

本文循序渐进地演示如何用不同的方法将数据从MicrosoftExcel工作表导入到MicrosoftSQLServer数据库。

技术说明本文中的示例...

本文循序渐进地演示如何用不同的方法将数据从MicrosoftExcel工作表导入到MicrosoftSQLServer数据库。

回到顶端

技术说明

本文中的示例使用以下工具导入Excel数据:

∙SQLServer数据传输服务(DTS)

∙MicrosoftSQLServer2005IntegrationServices(SSIS)

∙SQLServer链接服务器

∙SQLServer分布式查询

∙ActiveX数据对象(ADO)和MicrosoftOLEDBProviderforSQLServer

∙ADO和MicrosoftOLEDBProviderforJet4.0

回到顶端

要求

下面的列表列出了推荐使用的硬件、软件、网络架构以及所需的ServicePack:

∙MicrosoftSQLServer7.0、MicrosoftSQLServer2000或MicrosoftSQLServer2005的可用实例

∙MicrosoftVisualBasic6.0(针对使用VisualBasic的ADO示例)

本文的部分内容假定您熟悉下列主题:

∙数据传输服务

∙链接服务器和分布式查询

∙VisualBasic中的ADO开发

回到顶端

示例

导入与追加

本文使用的示例SQL语句演示了“创建表”查询。

该查询通过使用SELECT...INTO...FROM语法将Excel数据导入新的SQLServer表。

如这些代码示例所示,在继续引用源对象和目标对象时,可以通过使用INSERTINTO...SELECT...FROM语法将这些语句转换成追加查询。

使用DTS或SSIS

可以使用“SQLServerDataTransformationServices(DTS)导入向导”或“SQLServer导入和导出向导”将Excel数据导入到SQLServer表中。

在逐步执行向导并选择Excel源表时,要记住附加美元符号($)的Excel对象名称代表工作表(例如,Sheet1$),而没有美元符号的普通对象名称代表Excel指定的范围。

使用链接服务器

要简化查询,可以将Excel工作簿配置为SQLServer中的链接服务器。

有关其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:

306397 ()如何:

结合SQLServer链接的服务器和分布式查询使用Excel

下列代码将Excel链接服务器“EXCELLINK”上的Customers工作表数据导入新的名为XLImport1的SQLServer表:

SELECT*INTOXLImport1FROMEXCELLINK...[Customers$]

还可以通过按照以下方式使用OPENQUERY以全通过方式对源数据执行查询:

SELECT*INTOXLImport2FROMOPENQUERY(EXCELLINK,

'SELECT*FROM[Customers$]')

使用分布式查询

如果不想将对Excel工作簿的永久连接配置为链接服务器,可以通过使用OPENDATASOURCE或OPENROWSET函数为特定目的导入数据。

下列代码示例也能将ExcelCustomers工作表数据导入新的SQLServer表:

SELECT*INTOXLImport3FROMOPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',

'DataSource=C:

\test\xltest.xls;ExtendedProperties=Excel8.0')...[Customers$]

SELECT*INTOXLImport4FROMOPENROWSET('Microsoft.Jet.OLEDB.4.0',

'Excel8.0;Database=C:

\test\xltest.xls',[Customers$])

SELECT*INTOXLImport5FROMOPENROWSET('Microsoft.Jet.OLEDB.4.0',

'Excel8.0;Database=C:

\test\xltest.xls','SELECT*FROM[Customers$]')

使用ADO和SQLOLEDB

当通过使用MicrosoftOLEDBforSQLServer(SQLOLEDB)在ADO应用程序中连接到SQLServer时,可以使用与“使用分布式查询”一节中相同的“分布式查询”语法将Excel数据导入SQLServer。

下列VisualBasic6.0代码示例要求添加对ActiveX数据对象(ADO)的项目引用。

此代码示例还演示了如何在SQLOLEDB连接上使用OPENDATASOURCE和OPENROWSET。

DimcnAsADODB.Connection

DimstrSQLAsString

DimlngRecsAffAsLong

Setcn=NewADODB.Connection

cn.Open"Provider=SQLOLEDB;DataSource=;"&_

"InitialCatalog=;UserID=;Password="

'ImportbyusingOPENDATASOURCE.

strSQL="SELECT*INTOXLImport6FROM"&_

"OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',"&_

"'DataSource=C:

\test\xltest.xls;"&_

"ExtendedProperties=Excel8.0')...[Customers$]"

Debug.PrintstrSQL

cn.ExecutestrSQL,lngRecsAff,adExecuteNoRecords

Debug.Print"Recordsaffected:

"&lngRecsAff

'ImportbyusingOPENROWSETandobjectname.

strSQL="SELECT*INTOXLImport7FROM"&_

"OPENROWSET('Microsoft.Jet.OLEDB.4.0',"&_

"'Excel8.0;Database=C:

\test\xltest.xls',"&_

"[Customers$])"

Debug.PrintstrSQL

cn.ExecutestrSQL,lngRecsAff,adExecuteNoRecords

Debug.Print"Recordsaffected:

"&lngRecsAff

'ImportbyusingOPENROWSETandSELECTquery.

strSQL="SELECT*INTOXLImport8FROM"&_

"OPENROWSET('Microsoft.Jet.OLEDB.4.0',"&_

"'Excel8.0;Database=C:

\test\xltest.xls',"&_

"'SELECT*FROM[Customers$]')"

Debug.PrintstrSQL

cn.ExecutestrSQL,lngRecsAff,adExecuteNoRecords

Debug.Print"Recordsaffected:

"&lngRecsAff

cn.Close

Setcn=Nothing

使用ADO和JetProvider

上一节中的示例使用ADO和SQLOLEDBProvider连接到从Excel到SQL导入的目标。

也可以使用OLEDBProviderforJet4.0来连接到Excel源。

Jet数据引擎可以通过使用具有三种不同格式的特殊语法来在SQL语句中引用外部数据库:

∙[FullpathtoMicrosoftAccessdatabase].[TableName]

∙[ISAMName;ISAMConnectionString].[TableName]

∙[ODBC;ODBCConnectionString].[TableName]

本节使用第三种格式创建到目标SQLServer数据库的ODBC连接。

可以使用ODBC数据源名称(DSN)或者DSN-less连接字符串:

DSN:

[odbc;DSN=;UID=;PWD=]

DSN-less:

[odbc;Driver={SQLServer};Server=;Database=;

UID=;PWD=]

下列VisualBasic6.0代码示例要求添加对ADO的项目引用。

此代码示例演示了如何使用Jet4.0Provider通过ADO连接将Excel数据导入到SQLServer。

DimcnAsADODB.Connection

DimstrSQLAsString

DimlngRecsAffAsLong

Setcn=NewADODB.Connection

cn.Open"Provider=Microsoft.Jet.OLEDB.4.0;"&_

"DataSource=C:

\test\xltestt.xls;"&_

"ExtendedProperties=Excel8.0"

'ImportbyusingJetProvider.

strSQL="SELECT*INTO[odbc;Driver={SQLServer};"&_

"Server=;Database=;"&_

"UID=;PWD=].XLImport9"&_

"FROM[Customers$]"

Debug.PrintstrSQL

cn.ExecutestrSQL,lngRecsAff,adExecuteNoRecords

Debug.Print"Recordsaffected:

"&lngRecsAff

cn.Close

Setcn=Nothing

也可以通过使用该语法(JetProvider支持)将Excel数据导入其他MicrosoftAccess数据库、索引顺序存取方法(ISAM)(“desktop”)数据库或ODBC数据库。

回到顶端

疑难解答

∙记住附加美元符号($)的Excel对象名称代表工作表(例如:

Sheet1$),而普通对象名称代表Excel指定的范围。

∙在某些环境中,特别是用表名称取代SELECT查询指派EXCEL源数据时,目标SQLServer表中的列会按照字母顺序重排。

有关JetProvider中存在的这一问题的其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:

299484 ()PRB:

使用ADOX检索Access表的列时,列按字母顺序排列

∙当JetProvider确定一个Excel列包含了混合文本和数值数据时,JetProvider会选择“majority”数据类型并将不匹配的值以NULL形式返回。

有关如何解决这个问题的其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:

194124 ()PRB:

使用DAOOpenRecordset时Excel返回值为NULL

回到顶端

参考

有关如何将Excel用作数据源的其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:

257819 (http:

//suppo...

有关如何将Excel用作数据源的其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:

257819 ()如何:

在VisualBasic或VBA中使用ADO来处理Excel数据

有关如何将数据传输到Excel中的其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:

295646 ()如何:

使用ADO将数据从ADO数据源传输到Excel

247412 ()INFO:

将数据从VisualBasic传输到Excel的方法

246335 ()如何:

使用“自动化”功能将数据从ADO记录集传输到Excel

319951 ()如何:

通过SQLServer数据传输服务向Excel传送数据

306125 ()如何:

将数据从MicrosoftSQLServer导入MicrosoftExcel

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1