怎么用ssis改文件后缀名,急!!!!!!!!!!!!!!!!!

0
在一个foreach loop中,把某一特定目录下的所有文件的后缀名都给改了,给点提示,谢谢
已邀请:
3

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-09-29 回答

直接用C#代码搞定也行, 在ControlFlow弄个脚本任务

Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
Imports System.IO

Public Class ScriptMain
    Public Sub Main()
        Dim strDate As DateTime = DateTime.Now
        Dim strNewFileName As String
        strNewFileName = "SampleName" & DateTime.Now.ToString("yyyyMMdd") & ".txt"
        'Another Example to use yesterday's date
        'strNewFileName = "SampleName" & DateTime.Now.Subtract(New TimeSpan(1, 0, 0, 0)).ToString("yyyyMMdd") & ".txt"
        '
        Try
            File.Move(Dts.Variables("FileDirectory").Value.ToString & "\" & Dts.Variables("FileName").Value.ToString, Dts.Variables("FileDirectory").Value.ToString & "\" & strNewFileName)
            Dts.Events.FireInformation(0, "", "File Renamed Succesfully", "", 0, True)
        Catch ex As Exception
            Dts.Events.FireError(0, "", "Source File Does Not Exist", "", 0)
        End Try

        'For Debugging Purposes
        'System.Windows.Forms.MessageBox.Show(Dts.Variables("FileDirectory").Value.ToString & "\" & Dts.Variables("FileName").Value.ToString)
        Dts.TaskResult = Dts.Results.Success
    End Sub

End Class
2

BIWORK - 热衷于微软BI技术,技术架构和解决方案! 2015-09-29 回答

有两种做法:
一种是在 Foreach Loop 中,指定目录下每一次 Loop 就可以得到这个文件名称,使用 File System Task  对这个文件重命名。其中你需要创建一个变量来保存 Loop 中的这个文件名称,然后需要在 File System Task 中使用得到。
 
二是不需要使用 Foreach Loop,直接使用 Script Task 在里面是可以很容易访问到指定目录下的所有文件,读取文件重命名即可。
 
这两篇文章虽然和你的问题没有太大的关系,但是你可以看看它是如何访问文件的。
http://www.flybi.net/blog/biwork/991  微软BI 之SSIS 系列 - 在 SSIS 中将指定目录下的所有文件分类输出到不同文件夹
http://www.flybi.net/blog/biwork/1183  微软BI 之SSIS 系列 - 文件路径验证
http://www.flybi.net/blog/biwork/989  微软BI 之SSIS 系列 - 在 SSIS 输出平面文件时根据运行日期生成不同的文件名称
 

要回复问题请先登录注册