请教使用SSIS包转换文本空值为时间格式的问题

0
     在项目中遇到这样一个问题,需要将文本源数据使用SSIS包导入到oracle库,文本中有些字段的值是空值,对应的是oracle的时间字段,因此导入前需要先将文本相关的字段转换为时间格式,我尝试了在文本源直接转换、数据转换等方式,但一直不能成功,有知道该如何转换的吗?
已邀请:
1

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-06-24 回答

请按照如下步骤解决:
1. 数据格式
1.png

2. 使用转换控件,然后按照图3进行配置
2.png

3. 使用表达式转换数据类型为 Date
3.png

4. 配置错误输出项,忽略转换错误针对 dtDate列
4.png

5. 最终结果
5.png



 
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-06-23 回答

麻烦你把错误信息贴出来看看,否则也不知道你错在哪里
这个你先参考一下,如果还有问题再来回帖
http://www.cnblogs.com/refeine ... .html
0

sfrem 2015-06-23 回答

平面数据源默认为string[DT_STR]
错误1,将平面数据源的列直接定义为database timestamp [DT_DBTIMESTAMP]报错信息:[平面文件源 ] 错误: 数据转换失败。列“TS”的数据转换返回状态值 2 和状态文本“由于可能丢失数据,所以无法转换该值。”。
错误2,使用数据转换,将该列转换为database timestamp [DT_DBTIMESTAMP]报错信息:[数据转换 [236]] 错误: 在将列“TS”(36)转换为列“TS 的副本”(1690)时数据转换失败。转换操作返回状态值 2 和状态文本“由于可能丢失数据,所以无法转换该值。”。
 
 
0

sfrem 2015-06-23 回答

补充一下:这个问题也可以说是如何将平面源(TXT)数据字符类型(string[DT_STR])的字段转换为时间类型(database timestamp [DT_DBTIMESTAMP])的问题,其中TXT文本中这个字段的值为空值
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-06-23 回答

这个txt列,是有时为空呢 还是 一直都是空的?
如果都是空的 为什么还要转换?
0

sfrem 2015-06-23 回答

有时为空,因为在数据库中,这个列为时间类型的,默认为空,导出来以后就为空值了
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-06-23 回答

所以我就问你是不是有时为空啊,你这描述的情况也说的不清不楚的。还以为一个空的字段转换它干嘛

你写一个表达式 判断一下就可以了,转换前先判断是不是NULL
0

sfrem 2015-06-23 回答

不好意思,我是新手,表达式是在数据转换的时候写还是使用派生列转换呢?我看了下在派生列中有个转换函数:NULL(DT_DBTIMESTAMP),但不知道怎么用,能否给个例子啊,多谢啦
0

sfrem 2015-06-24 回答

不知道是我提的问题不够清晰还是别的原因,也许太过简单吧,但对于我来说这是目前项目中遇到的实际问题,所以还请以解决问题为先,我一直在等着答案,希望不要让新人失望啊!另外我觉得即便是一个空的字段,是不是也应该考虑如何转换呢,因为现在是空不代表未来了是空,因此这个问题还是要解决的!
0

sfrem 2015-06-24 回答

学习了,非常受用,完美解决我的问题, 非常感谢!

要回复问题请先登录注册