Sql server 将文件移动到ssis包的子文件夹

Sql server 将文件移动到ssis包的子文件夹,sql-server,ssis,etl,ssis-2012,Sql Server,Ssis,Etl,Ssis 2012,我创建了一个ssis包,用于将备份文件从c:位置移动到E:位置: source file path: C:\Backup\A\xxx.bak destination file path: E:\DB Backups\A\xxx.bak 我使用foreachloop容器并创建了两个变量:sourcefileV和destinationV,并使用文件系统任务重命名文件。但是,在将文件移动到目标位置后,该文件不在子文件夹E:\DB Backups\A中,而是在E:\DB Backups中。我必须手动剪

我创建了一个ssis包,用于将备份文件从c:位置移动到E:位置:

source file path: C:\Backup\A\xxx.bak
destination file path: E:\DB Backups\A\xxx.bak
我使用foreachloop容器并创建了两个变量:
sourcefileV
destinationV
,并使用文件系统任务重命名文件。但是,在将文件移动到目标位置后,该文件不在子文件夹
E:\DB Backups\A
中,而是在
E:\DB Backups
中。我必须手动剪切并将其移动到子文件夹。是否有任何方法可以直接将文件移动到ssis包中的目标子文件夹


谢谢,

您可以创建两个变量
@[User::DestinationFolder]
@[User::SourceFolder]

@[User::SourceFolder] = C:\Backup\
@[User::DestinationFolder] = E:\DB Backups\
您可以使用以下表达式创建目标文件夹路径

@[User::DestinationFolder] +  SUBSTRING(REPLACE(@[User::SourceFileV],@[User::SourceFolder],""),1, LEN(REPLACE(@[User::SourceFileV],@[User::SourceFolder],"")) - FINDSTRING(REVERSE(@[User::SourceFileV]),"\\",1))
您可以使用以下表达式获取目标文件路径

@[User::DestinationFolder] + REPLACE(@[User::SourceFileV],@[User::SourceFolder],"")

首先,您必须添加一个
executefilesystem任务
,以创建目标目录。然后您必须添加第二个
执行文件系统任务
来复制文件。

感谢您回答我的问题。我已经找到了解决这个问题的方法。我使用了foreach循环容器和文件系统任务来移动文件而不是重命名文件,还修改了foreach循环容器的配置。它工作得很好。感谢您的输入:)