请问如何设计dts使能够导入excel时能动态接受文件名

gwolf 2007-07-17 05:49:42
要在delphi6中开发,想使用dts,因为使用openrowset不能异地导入
...全文
225 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellowork 2007-07-17
  • 打赏
  • 举报
回复
把远程文件名换成网络路径名试试,例如:

当使用远程服务器上的异源数据时,必须使用异源数据的网络路径,即:
\\网络名\共享名\文件名
以EXECL为例:
假设IP地址为192.168.16.166的远程客户端的D盘的test文件夹下有一个EXECL文件Books1.xls,
本机IP地址为192.168.16.2,要读取该远程Books1.xls文件到本机的SQLSERVER中,则可
这样做:
第一步:将192.168.16.166远程客户端的D:\test文件夹设置为共享,共享名为test;
第二步:修改192.168.16.166远程客户端的WINDOWS防火墙设置,在<例外>中允许<文件和打印机共享>;
第三步:设置网络文件路径:

方法1:右键点击我的电脑->映射网络驱动器,假设网络驱动器为Z,映射路径为该远程客户端
的D:\test文件夹,然后这样进行查询:
SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=z:\book1.xls;Extended Properties=Excel 8.0')...[Sheet1$]
动态SQL:
declare @sql varchar(1000),@NetPathFile varchar(100)
set @NetPathFile = 'z:\book1.xls'
set @sql =
'SELECT * FROM OPENDATASOURCE(''Microsoft.Jet.OLEDB.4.0'',
''Data Source=' + @NetPathFile + ';Extended Properties=Excel 8.0'')...[Sheet1$]'
EXEC(@sql)

方法2:直接使用计算机名或远程计算机的IP:
SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=\\192.168.16.166\test\book1.xls;Extended Properties=Excel 8.0')...[Sheet1$]
动态SQL:
declare @sql varchar(1000),@NetPathFile varchar(100)
set @NetPathFile = '\\192.168.16.166\test\book1.xls'
set @sql =
'SELECT * FROM OPENDATASOURCE(''Microsoft.Jet.OLEDB.4.0'',
''Data Source=' + @NetPathFile + ';Extended Properties=Excel 8.0'')...[Sheet1$]'
EXEC(@sql)


以上在本机测试通过.测试环境:
简体中文WindowsServer2003sp1 + 简体中文SQLSERVER2000sp4 + 局域网
肥胖的柠檬 2007-07-17
  • 打赏
  • 举报
回复
我想问一下,导入excel的 DTS 的TSQL什么写
gahade 2007-07-17
  • 打赏
  • 举报
回复
这样不行吗?

SELECT *
FROM OpenDataSource( 'MICROSOFT.JET.OLEDB.4.0',
'Data Source="Excel文件所存放的路径";User ID=;Password=;Extended properties=Excel 5.0')...SheetName$

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧