【问题标题】:Derived column to get date from filenanme not working as expected从文件名获取日期的派生列未按预期工作
【发布时间】:2014-04-01 11:26:48
【问题描述】:

我有一个带有平面文件和 oledb 目标的 ssis 包..

我需要从文件名中获取日期并将其添加为数据库中的新列

但它不工作

我在派生列中这样做了

SUBSTRING(@[User::OS_file],27,10) 但在 sql-server 中尝试时返回日期

文件名是这样的

asjfbdsajfsd_21-08-2001_osss.log

我需要21-08-2001

尝试SUBSTRING(@[User::OS_file],27,10) 的结果如何

【问题讨论】:

    标签: sql-server ssis


    【解决方案1】:

    似乎您在 SUBSTRING 中使用了错误的索引。看起来它正在提取路径的一部分而不是文件名的一部分。如果你这样做呢?

    SUBSTRING(@[User::OS_file],50,10)
    

    注意,我已将起始索引从 27 更改为 50

    【讨论】:

    • ya..我使用了错误的索引,但在子字符串中更改 > 它可以工作,但该列没有添加到我的数据库中?你能帮忙吗!
    • +1 ..基本上我有一个变量来循环子文件夹!获取上述所有文件名..你能解释一下改变 > 是如何工作的吗?
    • 你能告诉我如何创建一个变量,一个用于循环所有子文件夹,一个用于存储文件名!我对 ssis 很陌生!
    • @user3449213 -- 因为你的索引是27,所以我只计算了“an2014\SA\”中的字符并将其添加到27,然后我计算了“开头的字符” asjfbdsajfsd_21-08-2001_osss.log”直到日期开始,并将其添加到我之前的结果中。这将字符串索引带到了日期开始的位置。
    • 至于你的另一个问题,那是一个不同的问题,你应该单独问。不幸的是,我对SSIS一无所知。我只是在应用字符串操作的一般知识(例如SUBSTRING)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    相关资源
    最近更新 更多