如何在指定为主键的属性中允许使用空格



我正试图将磁带文件中的一些记录输入到Oracle数据库中的表中。我正试图在控制文件的帮助下做到这一点
但是,在磁带文件中,针对主键属性的空间很少。在迁移记录时,加载程序将这些空间视为NULL,从而引发错误

有没有办法在主键属性中插入空格

提前感谢!

根据定义,主键不能为null。因此,不,您不能加载具有null值的记录。您需要找到一种方法,在加载时将一个唯一的值放入该字段。因此,常数不是一个选项,因为它只适用于一个记录,因为主键的唯一性因素。

对此,有多种选择。您可以创建一个与目标结构相同但没有主键的临时表,先加载到该表,然后将有效记录传输到表中,然后再找出如何处理坏行。

或者,如果键是基于数字的,那么只要您不使用SQL*Loader直接选项,您就可以向该表添加一个插入时触发器,该触发器会检查该字段中的null,并在该字段为null时将其设置为值。序列通常用于此,但在您的实例中,您需要测试与现有键值的冲突(例如,创建一个在远高于数据源中任何值的范围内开始的序列)。尽管如此,这还是一个风险,因为如果源系统最终复制了您创建的密钥,并且它破坏了根据ID将记录从目标追溯回源的任何能力,那么您可能会在未来遇到冲突。

最新更新