您的位置:首页 > 游戏 > 游戏 > 超级简历免费模板_爱心代码编程html教程_网站网址查询工具_西安计算机培训机构排名前十

超级简历免费模板_爱心代码编程html教程_网站网址查询工具_西安计算机培训机构排名前十

2025/1/11 7:49:03 来源:https://blog.csdn.net/wsx9172/article/details/144885283  浏览:    关键词:超级简历免费模板_爱心代码编程html教程_网站网址查询工具_西安计算机培训机构排名前十
超级简历免费模板_爱心代码编程html教程_网站网址查询工具_西安计算机培训机构排名前十

问题说明

在使用 KettleDB2 数据迁移到 Oracle 的过程中,出现了 DB2 中为空字符串的字段,在插入到 Oracle 过程中实际插入的为 NULL ,导致触发了非空校验而迁移失败

空字符串 ‘’ ,即长度为0的字符串

搜索该问题后得知, Kettle 默认将空字符串当作 NULL 处理,并提供了KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL配置项,修改配置项后需要重启 Kettle 生效

修改Kettle配置项方法

方法1:在 Kettle 图形化页面中修改

点击工具栏中编辑 -> 编辑kettle.properties文件,将该项的值修改为Y
在这里插入图片描述

方法2:修改 Kettle 的配置文件

  • windows系统配置文件路径 C:\Users\用户名\.kettle\kettle.properties
  • linux系统配置文件路径 ~/.kettle/kettle.properties

增加下行配置

KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y

大坑

反复确认了自己的配置项修改正确,依然无法将空字符串插入到 Oracle 的非空字段中,一直以为是Kettle的问题。几天后在一个文档中才偶然得知,Oracle对空字符串的处理方式不同于其他数据库, Oracle 中空字符串 ‘’ 被视为 NULL 。

总结

在多数的数据库中,空字符串和 NULL 通常是不同的,空字符串视为一个合法的值(表示长度为 0 的字符串), NULL 则表示未知或缺失的值。然而 Oracle 数据库采用了一种不同的设计思想:它认为“没有内容”与“未知内容”没有实际差异,所以它将两者视为相同。

  • Oracle:空字符串 ‘’ 被视为 NULL,它们是相同的。

  • DB2、MySQL、PostgreSQL、SQL Server、SQLite:空字符串 ‘’ 是有效的,并且与 NULL 不同。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com