【问题标题】:Oracle sqlldr - handling null values in input datasetOracle sqlldr - 处理输入数据集中的空值
【发布时间】:2018-04-05 22:22:02
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

    标签: mysql oracle sql-loader


    【解决方案1】:

    这对我有用。请注意,如果您使用的是基于 unix 的系统,则需要对 \N 进行转义,如下所示:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 感谢您的反馈。这帮助我朝着正确的方向开始,但并没有完全按照描述的那样工作。我确实做了一些细微的修改。
      • 您可以发布对您有用的内容,然后接受该答案。如果你喜欢我的回答,也可以点赞。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多