使用TLSQL实现导出导出支持EXCLE的导入导出Word文档格式.docx
《使用TLSQL实现导出导出支持EXCLE的导入导出Word文档格式.docx》由会员分享,可在线阅读,更多相关《使用TLSQL实现导出导出支持EXCLE的导入导出Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
OpenRowset/OpenDatasource'
的访问,因为此组件已作为此服务器
安全配置的一部分而被关闭。
系统管理员可以通过使用sp_configure启用'
。
有关启用'
AdHocDistributed
Queries'
的详细信息,请参阅SQLServer联机丛书中的"
外围应用配置器"
二、打开远程连接
服务和连接的外围应用配置器
远程连接
本地连接和远程连接
仅使用TCP/IP
应用
重新启动数据库引擎
链接服务器"
(null)"
的OLEDB访问接口"
SQLNCLI"
返回了消息"
登录超时已过期"
建立到服务器的连接时发生错误。
连接到SQLServer2005时,默认设置
SQLServer不允许远程连接这个事实可能会导致失败。
"
消息65535,级别16,状态1,第0行
SQL网络接口:
从注册表获取已启用的协议列表时出错[xFFFFFFFF].
三、打开客户端TCP/IP协议
SQLServerConfigurationManager
SQLServer2005网络配置:
启用TCP/IP协议
SQLNativeClient
配置:
启用
默认端口-1433
四、创建联接服务器
execsp_addlinkedserver@server='
conndb04'
@provider='
sqloledb'
@srvproduct='
'
@datasrc='
WINNIE\IIDC'
execsp_addlinkedsrvlogin@rmtsrvname='
@useself='
false'
@locallogin='
admin'
@rmtuser='
@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、第四步和第六步等同于:
go
insertINTOOPENDATASOURCE(
'
SQLOLEDB'
DataSource=WINNIE\IIDC;
UserID=admin;
Password=password'
).wwww.dbo.pro_unit_sort
select*fromwwww_xx.dbo.xx.unit_sort;
2、执行此操作时,将使用到UDP1434端口,如果防火墙关闭了此端口的话,请将其打开。
参考文档:
1、使用Transact-SQL进行数据导入导出方法详解:
2、SQLServer的链接服务器技术小结
如何将数据从Excel导入到SQLServer
查看本文应用于的产品
本页
∙
概要
o
技术说明
要求
示例
▪
导入与追加
使用DTS或SSIS
使用链接服务器
使用分布式查询
使用ADO和SQLOLEDB
使用ADO和JetProvider
疑难解答
参考
展开全部|关闭全部
本文循序渐进地演示如何用不同的方法将数据从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('
Excel8.0;
Database=C:
\test\xltest.xls'
[Customers$])
SELECT*INTOXLImport5FROMOPENROWSET('
'
使用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=<
server>
&
_
"
InitialCatalog=<
database>
UserID=<
user>
Password=<
password>
ImportbyusingOPENDATASOURCE.
strSQL="
SELECT*INTOXLImport6FROM"
OPENDATASOURCE('
"
)...[Customers$]"
Debug.PrintstrSQL
cn.ExecutestrSQL,lngRecsAff,adExecuteNoRecords
Debug.Print"
Recordsaffected:
lngRecsAff
ImportbyusingOPENROWSETandobjectname.
SELECT*INTOXLImport7FROM"
OPENROWSET('
[Customers$])"
ImportbyusingOPENROWSETandSELECTquery.
SELECT*INTOXLImport8FROM"
)"
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=<
DSNname>
UID=<
PWD=<
]
DSN-less:
Driver={SQLServer};
Server=<
Database=<
UID=<
下列VisualBasic6.0代码示例要求添加对ADO的项目引用。
此代码示例演示了如何使用Jet4.0Provider通过ADO连接将Excel数据导入到SQLServer。
Provider=Microsoft.Jet.OLEDB.4.0;
\test\xltestt.xls;
ExtendedProperties=Excel8.0"
ImportbyusingJetProvider.
SELECT*INTO[odbc;
].XLImport9"
FROM[Customers$]"
也可以通过使用该语法(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
使用DAOOpenRecordset时Excel返回值为NULL
有关如何将Excel用作数据源的其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
257819
(http:
//suppo...
257819
在VisualBasic或VBA中使用ADO来处理Excel数据
有关如何将数据传输到Excel中的其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
295646
使用ADO将数据从ADO数据源传输到Excel
247412
()INFO:
将数据从VisualBasic传输到Excel的方法
246335
使用“自动化”功能将数据从ADO记录集传输到Excel
319951
通过SQLServer数据传输服务向Excel传送数据
306125
将数据从MicrosoftSQLServer导入MicrosoftExcel