Oracle SQL Loader - 如何不显示“达到提交点 - 逻辑记录计数”计数

时间:2012-08-10 13:16:54

标签: sql oracle loader sql-loader

我正在通过Oracle SQL Loader从家里通过vpn加载大文件,而且他们花了很多时间。当我从工作中加载它们时加载速度要快得多。我正在加载的文件已经在我的工作服务器上了。

所以我的想法是,减速是因为为每一行打印的“达到提交点 - 逻辑记录计数”。由于必须通过网络发送,因此必须很慢。我用谷歌搜索,但找不到任何方法来打印更少的。尝试添加rows = 5000作为参数,但我仍然得到每行的打印件。

如何打印较少的“达到提交点 - 逻辑记录计数”计数?

由于

4 个答案:

答案 0 :(得分:6)

您可以使用options clause中提供的关键字silent。您可以将following things设置为无声:

  
      
  • HEADER - 禁止通常出现在屏幕上的SQL * Loader标头消息。标题消息仍显示在日志文件中。
  •   
  • FEEDBACK - 禁止通常出现在屏幕上的“提交点已达到”反馈消息。
  •   
  • 错误 - 抑制日志文件中的数据错误消息,该消息在记录生成导致其出现的Oracle错误时发生   写入坏文件。仍会显示已拒绝记录的计数。
  •   
  • DISCARDS - 禁止写入丢弃文件的每条记录的日志文件中的消息。
  •   
  • PARTITIONS - 在直接加载分区表时禁止将每分区统计信息写入日志文件。
  •   
  • ALL - 实现所有抑制值:HEADER,FEEDBACK,ERRORS,DISCARDS和PARTITIONS。
  •   

您想要取消feedback

您可以在命令行上使用,例如:

sqlldr schema/pw@db silent=(feedback, header)

在控制文件的options子句中,例如:

options (bindsize=100000, silent=(feedback, errors) )

答案 1 :(得分:0)

尝试将输出和错误重定向到文件。

答案 2 :(得分:0)

Ben的回答非常好。不要使用任何shell程序来压制STDOUT。我使用了以下内容:

sqlldr schema/pw@db mycontrolfile.ctl | sed '/Commit point reached/d'

其中一个问题是,如果您使用脚本来运行命令,那么sed命令将刷新错误返回值。换句话说,如果由于某种原因,sqlldr失败并返回值为1,则sed将立即刷新此值,返回值为0.因此,您的错误状态将被刷新。

重定向STDOUTSTDERR可能不如Ben的解决方案好。

答案 3 :(得分:0)

从shell脚本调用sqlldr时遇到同样的问题。

错误:

  

SQL * Loader:版本10.2.0.3.0 - 生产于2016年8月9日星期二20:06:38   版权所有(c)1982,2005,Oracle。保留所有权利。

     

达到提交点 - 逻辑记录计数64

     

表myschema.ORG_MOVEMENT_RULES的SQL Loader失败。退出...

经过调查,发现控制文件(v_movementrules_control)在从Windows复制到Unix系统时已损坏,并且在每行末尾都有DOS / Windows行结束字符^M

sqlldr userid=${USER}/${PASS}@${DB} control=${v_OrgRules_Control}