【发布时间】:2014-08-11 01:39:40
【问题描述】:
我正在编写一个程序来处理 SSIS 中的文件名。
概览:
我在 SSIS 中的文本文件加载过程中捕获文件名。我编写了一个程序,以便将此文件名拆分为不同的组件,并以变量的形式返回值,我将在 SSIS 包中进一步使用这些值。
Problem
This file name is of the format @FileName ="FILE_DATE_REF_DATETIME".All I need
to split this in a way like "FILE" , "DATE". I am able to achieve this by using
SUBSTRING(@Filename,0,CHARINDEX('_',@FileName))
and
Substring(@FileName,CHARINDEX('_',@FileName)+1,CHARINDEX('_',SUBSTRING(@Filename,CHARINDEX('_',@Filename)+1,Len(@Filename)))-1)
但这里的主要问题是当我们在 FILE 中获得额外的 '_' 时,它完全出错了。谁能建议我将上述文件名格式拆分为 FILE 和 DATE 的方法。
编辑
文件名示例:
asdfkg_20140710_ets20140710_0525_theds
asdjjf_they_20140710_ets20140710_0525_theds
oiuth_theyb_wgb_20140710_ets20140710_0526_theds
我需要提取 20140710 和 20140710 之前的任何内容。
【问题讨论】:
-
编辑您的问题并显示文件名示例和您要提取的部分。
-
如何使用脚本任务和正则表达式提取所需的详细信息?这是一个选择吗?
-
看起来文件名格式与示例显示的不匹配,例如格式中
DATETIME的最后一部分只是theds(这怎么可能是日期时间?),@ 987654325@ 部分不应有任何下划线,但看起来它可能有一些,如示例所示(ets20140710_0525,...),我想这里的DATE部分是20140710。因此,由于REF,问题变得比您试图解释的更复杂(尚不清楚它是否可能包含 1 个或更多下划线)。
标签: sql sql-server stored-procedures sql-server-2012 ssis