代码之家  ›  专栏  ›  技术社区  ›  user9074332

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

  •  2
  • user9074332  · 技术社区  · 7 年前

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

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

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

    谢谢

    2 回复  |  直到 7 年前
        1
  •  0
  •   user9074332    7 年前

    这对我来说很有用。请注意,如果您在基于unix的系统上,则需要按如下方式转义:

    ...
    COLUMN_NM CHAR(4000) NULLIF COLUMN_NM='\\N',
    ...
    
        2
  •  0
  •   jose_bacoy    7 年前

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

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