Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssis 将平面文件列转换为日期时间_Ssis - Fatal编程技术网

Ssis 将平面文件列转换为日期时间

Ssis 将平面文件列转换为日期时间,ssis,Ssis,任何人都可以帮助我,我有下面的格式,是从一个平面文件 2013-12-30 00-20-18114 我必须将其转换为日期时间,并将其插入数据库。我试图通过查找并使用替换为“.”来更改“,”(毫秒部分) 但正如你所看到的,这是行不通的 谢谢您从一个字符串开始,这个字符串是2013-12-30 00-20-18114,您需要将它转换为SQL Server可以处理的格式。明确的格式是“代码>2013-1230T00:20:18.114< /代码>,但是表达式语言不喜欢中间的T,所以我们必须解决 201

任何人都可以帮助我,我有下面的格式,是从一个平面文件

2013-12-30 00-20-18114

我必须将其转换为日期时间,并将其插入数据库。我试图通过查找并使用替换为“.”来更改“,”(毫秒部分) 但正如你所看到的,这是行不通的


谢谢

您从一个字符串开始,这个字符串是
2013-12-30 00-20-18114
,您需要将它转换为SQL Server可以处理的格式。明确的格式是“代码>2013-1230T00:20:18.114< /代码>,但是表达式语言不喜欢中间的T,所以我们必须解决<代码> 2013-12:30:20:18.114</代码>作为我们的结束状态。

接下来的问题是,如何将提供的字符串转换成该格式。您可以使用脚本任务,但没有必要为类似的事情拔枪。因为SSIS中的表达式可能有点麻烦,所以我将在数据流中有几个派生列,以允许我朝着最终目标迈出一小步

OLE_SRC日期字符串 我在这里有一个基本查询来注入提供的值

SELECT
    '' AS wtf
分裂成部分 这个派生列将创建两个列:DatePart和TimePart。最终结果是,我将在空白处拆分此列

DatePart被定义为
子字符串(wtf,1,10)
,因此这会从字符串中去掉前10个字符。 时间部分被定义为
LTRIM(右(wtf,LEN(wtf)-10))
因此它接受剩余的字符,无前导空格

标准化 在这一步中,我将把时间部分转换成标准格式。我创建了一个新的列StandardTime,并使用表达式
REPLACE(REPLACE(TimePart,,,,),“-”,“:”

海螺 在这里,我将这两个列重新组合在一起,形成一个名为
ConversionReady
的全新列。此表达式为
DatePart+“”+StandardTime

数据转换 在这里,我将我的
ConversionReady
列转换为date[dtu date]数据类型,并将其称为
ConversionReady的副本,因为我很懒

OLE DB目的地 我创建了一个表,并将wtf映射到SourceValue,将“ConversionReady副本”映射到ConvertedValue

CREATE TABLE dbo.ConversionReady
(
    SourceValue varchar(30)
,   ConvertedValue datetime
);
所有这些派生列是怎么回事?那不是减慢了速度吗?
。这当然比在一个表达式中调试更容易,因为您没有表达式的调试功能。

当我将日期和时间混合在一个字符串中,然后尝试将其转换为日期时间时,我遇到了相同的问题。这是不可能的

然后我分别做了。并使用日期添加功能将时间添加到日期

我回答了我自己的问题,请检查下面的链接

随便问什么都可以。
给你

我们什么也看不见。请发布您的代码和遇到的任何错误。嘿,Shree.pat18,我现在还没有在上面实现任何代码。我在平面文件中得到的格式是“mm dd yyyy hh mm ss,ms”…需要将其转换为datetime格式如何使用派生列添加新的datetime列,然后进行脚本转换,将其转换为合适的格式并返回datetime?@shree.pat18如果我使用脚本转换,我只是在那里创建列,而不是在上游组件中创建列,以便在下一步进行更改。这是我得到的错误[Data Conversion[41]]错误:在将列“DATE_PART”(151)转换为列“PROCESSED_DATE_PART”(50)时,数据转换失败。转换返回状态值2和状态文本“由于数据可能丢失,无法转换该值”。@billinkc Ah yes我明白了。@snp.it此解决方案适用于提供的数据点。你能用更多的数据更新你的问题吗