如何在ssis中获取带有时间戳的文件名
我有一个输入文件,必须每天加载到我的表中。我收到以下格式的文件sample\u 20120518\u 160754.CSV。时间戳可能会有所不同,它不是当前时间戳 我使用表达式来获取文件名和日期,但如何获取文件的时间戳呢 这是我用来获取文件和日期的表达式如何在ssis中获取带有时间戳的文件名,ssis,Ssis,我有一个输入文件,必须每天加载到我的表中。我收到以下格式的文件sample\u 20120518\u 160754.CSV。时间戳可能会有所不同,它不是当前时间戳 我使用表达式来获取文件名和日期,但如何获取文件的时间戳呢 这是我用来获取文件和日期的表达式 "sample_" + RIGHT("0" + (DT_STR,4,1252)DATEPART("yyyy", (DT_DATE)@[User::p_varAsOfDate]), 4) + RIGHT("0" + (DT_STR, 2, 125
"sample_" + RIGHT("0" + (DT_STR,4,1252)DATEPART("yyyy", (DT_DATE)@[User::p_varAsOfDate]), 4) + RIGHT("0" + (DT_STR, 2, 1252)DATEPART("dd", (DT_DATE)@[User::p_varAsOfDate]), 2) + (DT_STR, 2, 1252)DATEPART("mm", (DT_DATE)@[User::p_varAsOfDate]) +"_" +".CSV"
这个表达式产生结果
示例\u 2012145\uu.CSV现在我还需要文件的时间戳。下面的表达式将为您提供日期部分+时间部分。您可以在两者之间添加额外的分隔符,以实现所需的格式
(DT_STR, 4, 1252)DATEPART("yyyy", @[System::ContainerStartTime]) +
RIGHT("0" + (DT_STR, 2, 1252)DATEPART("mm", @[System::ContainerStartTime]), 2) +
RIGHT("0" + (DT_STR, 2, 1252)DATEPART("dd", @[System::ContainerStartTime]), 2) +
RIGHT("0" + (DT_STR, 2, 1252)DATEPART("hh", @[System::ContainerStartTime]), 2) +
RIGHT("0" + (DT_STR, 2, 1252)DATEPART("mi", @[System::ContainerStartTime]), 2) +
RIGHT("0" + (DT_STR, 2, 1252)DATEPART("ss", @[System::ContainerStartTime]), 2) +
您可以编辑上述表达式并使用您选择的另一个变量。我选择集装箱起航时间是因为方便 下面是一个表达式,它将为您提供日期部分+时间部分。您可以在两者之间添加额外的分隔符,以实现所需的格式
(DT_STR, 4, 1252)DATEPART("yyyy", @[System::ContainerStartTime]) +
RIGHT("0" + (DT_STR, 2, 1252)DATEPART("mm", @[System::ContainerStartTime]), 2) +
RIGHT("0" + (DT_STR, 2, 1252)DATEPART("dd", @[System::ContainerStartTime]), 2) +
RIGHT("0" + (DT_STR, 2, 1252)DATEPART("hh", @[System::ContainerStartTime]), 2) +
RIGHT("0" + (DT_STR, 2, 1252)DATEPART("mi", @[System::ContainerStartTime]), 2) +
RIGHT("0" + (DT_STR, 2, 1252)DATEPART("ss", @[System::ContainerStartTime]), 2) +
您可以编辑上述表达式并使用您选择的另一个变量。我选择集装箱起航时间是因为方便
@[User::miFilePath]+“AnyName”+“+”(dtu WSTR,04)年(GETDATE())+(MONTH(GETDATE())>=10(DT_WSTR,02)月(GETDATE()):“0”+(dtu WSTR,02)月(GETDATE())+(DAY(GETDATE())>=10(DT_WSTR,02)天(GETDATE()):“0”+(DT_WSTR,02)天(GETDATE())+(GETDATE())+(GETDATE()):“0”+(DT,125r,02)天(GETDATE()))+(GETDATE())+(GETDATE())+(GETDATE())+(GETDATE())+(GETDATE())+)+(GETDATE())+)+(GETDATE())+)DATEPART(“mi”,GETDATE()),2)+右(“0”+(DT_STR,21252)DATEPART(“ss”,GETDATE()),2)+“.txt”
@[User::miFilePath]+“AnyName”+“(DT_WSTR,04)YEAR(GETDATE())+(MONTH(GETDATE())>=10(dtwstu,02)MONTH(GETDATE()):“0”+(dtwstr,02)MONTH(GETDATE()):(GETDATE())=10,02)DAY(dtu())(GETDATE())+“+”右(“0”+(DT_STR,21252)日期部分(“hh”,GETDATE()),2)+右(“0”+(DT_STR,21252)日期部分(“mi”,GETDATE()),2)+右(“0”+(DT_STR,21252)日期部分(“ss”,GETDATE()),2)+.txt”
你好,拉吉夫,我试图使用这个表达式,但这个表达式没有当前的时间戳。我可能在早上6点收到文件,下午2点加载文件。因此,在这种情况下,它不起作用。你到底想实现什么?你想从CSV文件中提取数据吗?你为什么要构造表达式以跟踪日期和时间?示例_2012145_2145.CSV看起来也不正确,“2012145”没有任何意义。我每天都收到文件,我的文件名是sample_yyyddmm_hhmmss.CSV格式。因此我将Asofdate作为输入变量传递。这是我用来获取文件名“sample_2145”+right(“0”+(DT_STR,41252)DATEPART(“yyyy”)的表达式,(DT_日期)@[User::p_varAsOfDate]),4)+右(“0”+(DT_STR,21252)日期部分(“mm”,(DT_日期)@[User::p_varAsOfDate]),2)+(DT_STR,21252)日期部分(“dd”,(DT_日期)@[User::p_varAsOfDate])+“.CSV”我仍然不明白您为什么要创建此表达式。是否使用此表达式来动态设置源组件中的文件名?如果是,有更好的方法来处理此问题。您只需使用GETDATE()我尝试使用这个表达式来代替系统变量Hi Rajiv,但是这个表达式没有当前的时间戳。我可能在早上6点收到文件,下午2点加载文件。所以在这种情况下它不起作用。你到底想实现什么?你想从CSV文件中提取数据吗?你到底为什么要构建用于提取日期和时间的表达式?示例_2012145_.CSV看起来也不正确,“2012145”没有任何意义。我每天都收到文件,文件名为sample_yyyddm_hhmmss.CSV格式。因此我将Asofdate作为输入变量传递。这是我用来获取文件名“sample_”+right(“0”+(DT_STR,41252)DATEPART的表达式(“yyyy”,“DT_DATE”@[User::p_varAsOfDate]),4)+右(“0”+(dtu STR,21252)日期部分(“mm”,“dtu DATE”)@[User::p_varAsOfDate]),2)+(dtu STR,21252)日期部分(“dd”,“DT_DATE”@[User::p_varAsOfDate])+“.CSV”我仍然不明白为什么要创建此表达式。是否使用此表达式来动态设置源组件中的文件名?如果是,有更好的方法来处理此问题。您可以简单地使用GETDATE()而不是系统变量