csv - SSIS 将空白日期时间列转换为 NULL 并解析输入

标签 csv datetime ssis etl flat-file

我有以下简单的 SSIS 包来处理逗号分隔的文件:

enter image description here

我在处理日期列时遇到问题 - 特别是 MoveInDate,其中输入列的数据格式为 '20090731000000'

它进入数据库列 MoveInDt,它具有 Datetime 数据类型,数据以以下格式结束:

'2009-07-31 00:00:00.000'

在 SSIS 中,我已将输入列指定为 DT_DBTIMESTAMP。我不知道如何做一个简单的“如果 MoveInDate 为空,加载 null,否则将数据更改为‘YYYY-MM-DD 00:00:00.000’”

现在我什至无法弄清楚如何加载硬编码日期

失败

Derived Column

同样

"2019-01-01"

或者

(DT_DBTIMESTAMP)"2019-01-01"
(DT_DBTIMESTAMP)(DT_DATE)"2019-01-01"

Error: 0xC02020A1 at Data Flow Task, Flat File Source [11]: Data conversion failed. The data conversion for column "Move In Date" returned status value 2 and status text "The value could not be converted because of a potential loss of data.".
Error: 0xC0209029 at Data Flow Task, Flat File Source [11]:

查找该消息时,我发现有关数据类型在输入到输出列上不匹配的帖子,但查看它...

查看平面文件输入列,定义为DT_DBTIMESTAMP

enter image description here

在查看输入输出属性时,目标列也定义为 DT_DBTIMESTAMP

enter image description here

我在这里和其他地方看过很多问题,并尝试将输入减少到输入文件中的一个简单行。我试过多次重新创建包。

最佳答案

如果数据在平面文件中以如下格式存储

20090731000000

然后将源列数据类型保留为 DT_STR 并使用以下表达式添加派生列:

(ISNULL([MoveInDate]) || [MoveInDate] == "") ? NULL(DT_DBTIMESTAMP) : 
    (DT_DBTIMESTAMP)(LEFT([MoveInDate],4) + "-" + 
                     SUBSTRING([MoveInDate],5,2) + "-" + 
                     SUBSTRING([MoveInDate],7,2) + " " + 
                     SUBSTRING([MoveInDate],9,2) + ":" + 
                     SUBSTRING([MoveInDate],11,2) + ":" + 
                     SUBSTRING([MoveInDate],13,2) )

如果数据以下列格式存储:

2009-07-31 00:00:00

使用以下表达式:

(ISNULL([MoveInDate]) || [MoveInDate] == "") 
         ? NULL(DT_DBTIMESTAMP) 
         : (DT_DBTIMESTAMP)[MoveInDate]

如果数据以下列格式存储:

2009-07-31

使用以下表达式:

(ISNULL([MoveInDate]) || [MoveInDate] == "") 
         ? NULL(DT_DBTIMESTAMP) 
         : (DT_DBTIMESTAMP)([MoveInDate] + " 00:00:00")

关于csv - SSIS 将空白日期时间列转换为 NULL 并解析输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55148090/

相关文章:

php - 创建 CSV 并自动保存在本地/服务器上

java - Camel : How to skip multiple header lines in CSV files

ruby - 规范化不同格式的原始文本以在 Ruby 中创建对象

php - 根据文件名中的日期查找文件

c# - BIML SsisDataTypeOverride 不工作

sql-server - 是否可以通过 SSIS 脚本转换传递列?

python - numpy loadtxt 跳过第一行

python - 在 Python 中结合年、月和日来创建日期

python - 将日期序列分配给 pandas groupby 组

sql-server - SSIS 查找在 varchar 字段上找不到匹配项