kettle 选择字段 增加系统日期字段

kettle 选择字段 增加系统日期字段,第1张

今天使用kettle从mysql导数到oracle,发现只导了7行后,数据传输就终止了,查看日志信息,报错如下:

image

报:Couldn't get row from result set问题。

发现从这行开始这个时间字段除了正常的时间数据以外还有NULL值,难道这类的值引起的错误,在查询了相关资料后,才知道jdbc(默认行为)认为null或'0000-00-00'这样的日期时间值是无效的。如果想避开这个问题,需要编辑jdbc的连接属性,添加如下属性值:

zeroDateTimeBehavior=convertToNull

image

设置之后导数成功进行。

image

所以,设计生产系统中的相关表时,默认值最好不要使用'0000-00-00'或null这样的值。

点击“输出”,直接将“插入/更新”拖拽到右边的工作框,

同样取个名——选择数据库连接——目标表选择你需要插入/更新的表——目标表与源数据表(流)的对应关系(此处即user_age表的user_id与user表的id,可理解为外键关系,spoon通过比较这两个字段来同步数据)——数据同步的对应关系(记住更新下面选择Y,不需要同步选择N)

考虑这样的一个工作表

如果想把里面的 9 列数据都读出来, 就要考虑如何处理多级表头.

[@more@]

步骤设置的详细描述:

步骤一 选择文件名

步骤二 选择要读取的工作表名称和要读取的内容在工作表里的起始位置, 也就是表头开始的行号和列号 (这里行号和列号是以 0 开始的)

步骤三 设置要读取的内容的一些属性, 这里要设置表头的所占行数是 3 行.

步骤四 错误处理, 选择如果有错误终止还是继续, 错误信息保存的文件等.

(图略)

步骤五 选择字段, 如果前面的三个步骤(不包括错误处理步骤)都设置正确, 在这个页面选择 "获取字段" 字段按钮, 就会获得所有的列名称和数据类型.

这里我们可以看到: 多级表头中各级表头的名称被叠加起来, 形成了唯一的列名.

点击 [预览] 按钮可以预览到数据

对于表头跨连续的多行, 但不分级的情况也可以使用上述方式处理.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7984667.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存