Oracle sqlldr - 处理输入数据集中的空值

Oracle sqlldr - handling null values in input dataset

我正在将数据从 MySQL 移动到 Oracle。 MySQL 输入数据集已通过 MySQL 数据转储提供。 MySQL 数据库中的空值在输出文件中写为“\N”(不带引号)。

我正在使用 sqlldr 将数据导入 Oracle,而“\N”值在映射到 NUMBER 数据类型的列中有问题,因为 Oracle 认为它们是字符串。

如何告诉 sqlldr 输入数据集中的任何 \N 值都应映射到 Oracle 中的 Null?

谢谢。

您可以在控制文件中使用NULLIF。如果在该列中找到 \N,它将分配 null。请参阅下面的语法。

<COLUMN_NUMBER> NULLIF <COLUMN_NUMBER> = '\N'

这对我有用。请注意,如果您使用的是 unix-based 系统,则 \N 需要转义如下:

...
COLUMN_NM CHAR(4000) NULLIF COLUMN_NM='\N',
...