【问题标题】:Ignore error in SQL loader忽略 SQL 加载程序中的错误
【发布时间】:2017-12-29 19:22:33
【问题描述】:

我想忽略所有字段为空的 .csv 文件的最后一行。但是在导入数据时,我不希望 SQL 加载器生成错误消息“行未加载,因为所有字段都为空”或“行未加载,因为所有 WHEN 子句均失败”。我希望它导入数据而不产生任何错误。

有没有办法做到这一点?我已尝试使用 Trailing Nullcols,但它不起作用。

【问题讨论】:

    标签: oracle11g sql-loader


    【解决方案1】:

    如果您可以提前知道文件中有多少行,您可以使用 LOAD= 选项告诉 sqlldr 要加载多少行。另一方面,如果您正在做预处理来解决这个问题,那么您可以删除空白行,除非您的规范是不更改文件。

    或者只是将所有行加载到临时表中并从那里处理,这是处理加载的常用方法。

    【讨论】:

    • 我无法更改 csv 文件。它们直接来自服务器。而且行数很大,所以我也数不过来。我只需要一种方法来加载所有行并忽略空行而不给出错误
    • 要么使用临时表,要么接受它的设计工作方式。这不是一个真正的错误,即使它听起来像:-/
    • @varad 等等,你没有理由不能编写一个包装脚本来获取文件的行数,然后使用 LOAD= 的选项调用 sqlldr。您使用的是什么操作系统?要在 *nix 上获得行数,请使用 wc -l 或在 Windows 上使用 find /c /v "" < filename.dat。您需要根据自己的限制在这里获得一些创意,仅此而已:-)
    • OPTIONS ( DIRECT=FALSE, SILENT=(FEEDBACK, DISCARDS) , SKIP=2 , ERRORs=9999999999) LOAD DATA INFILE 'PATH/FILE_NAME.csv' TRUNCATE INTO TABLE TABLE_NAME FIELDS TERMINATED by ","可选地用 '"' TRAILING NULLCOLS 括起来这是代码的一部分。你能告诉在哪里添加字数统计行吗?@Gary_W
    • 它说:'w​​c-l-1' 不是 'skip' 的合法整数
    猜你喜欢
    • 1970-01-01
    • 2019-11-19
    • 2011-05-20
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多