繁体   English   中英

使用SQL Server 2008根据表中的数据以及它们是否本地存在来检索远程文件

[英]Retrieving remote files based on data from table and whether they exist locally using SQL Server 2008

任何人都可以告诉我执行此任务的最佳方法,我不希望为我写的脚本(我喜欢学习),我只需要一个指针即可,这是解决问题的最佳方法,

我为目录中的每个产品下载了名为( ProdId.xml )的xml文件。

我从SQL Server 2008表产品中获得了产品ID的列表。 目前,将它们放入Excel并在每个文件之前放置wget语句,并提供完整路径以及用户文件源的用户名和密码。

例如

wget website/xmlfiles/prodid.xml – username – password

我会为每个文件执行此操作。

我想自动化该过程,因此每天提取所有产品ID的检查信息,以查看文件是否已存在,然后从网站上收集该文件。

我该怎么做?

我建议您考虑编写一个SQL Server Integration Services或SSIS包来为您执行此操作。 SSIS可用于数据提取,转换和加载。

在线上有很多关于SSIS的教程。 这里有一些:

MS SQL提示-SQL Server集成服务(SSIS)

SSIS教程:SQL Server 2005 Integration Services教程

SSIS教程:创建一个简单的ETL包

最后使用了这个脚本

DECLARE @Product_ID INT
DECLARE Product CURSOR
FOR SELECT Product_ID
FROM dbo.table

OPEN Product

declare @Paths varchar(128) ,
@FileName varchar(128),
@FileExtension varchar(128)

FETCH NEXT FROM Product
INTO    @Product_ID

WHILE @@FETCH_STATUS = 0
BEGIN

select  @Paths = 'C:\Data\xmls\' ,
@FileExtension = '.xml',
@FileName = @Product_ID


declare @objFSys int
declare @i int
declare @File varchar(1000)

select @File = @Paths + @FileName + @FileExtension
exec sp_OACreate 'Scripting.FileSystemObject', @objFSys out
exec sp_OAMethod @objFSys, 'FileExists', @i out, @File
if @i = 1
print 'Allready There ' + CONVERT(VARCHAR(36), @Product_ID)
else

PRINT 'Neet to get ' + CONVERT(VARCHAR(36), @Product_ID) + '.xml From Source.'

FETCH NEXT FROM Product
INTO @Product_ID

exec sp_OADestroy @objFSys 
END

CLOSE Product
DEALLOCATE Product

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM