【问题标题】:Keyword error with SQL*Loader and generated control fileSQL*Loader 的关键字错误和生成的控制文件
【发布时间】:2015-08-31 21:02:57
【问题描述】:

当我的 shell 脚本运行时,我是一个动态创建控制文件,带有:

echo 'LOAD DATA'                             > $CTLDIR/test.ctl
echo 'TRUNCATE'                              >> $CTLDIR/test.ctl
echo 'INTO TABLE TEMP'                       >> $CTLDIR/test.ctl
echo 'FIELDS TERMINATED BY ","'              >> $CTLDIR/test.ctl
echo 'TRAILING NULLCOLS'                     >> $CTLDIR/test.ctl
echo '('                                     >> $CTLDIR/test.ctl
echo 'NO, '                                  >> $CTLDIR/test.ctl
echo 'I_NUM , '                              >> $CTLDIR/test.ctl
echo 'QTY  , '                               >> $CTLDIR/test.ctl
echo 'CREATE_DATETIME       SYSDATE'         >> $CTLDIR/test.ctl
echo ')'                                     >> $CTLDIR/test.ctl

当我执行我的 shell 脚本时,我收到错误“预期关键字 INTO,找到关键字 LOAD。”

请帮我解决这个问题。

【问题讨论】:

  • 您还没有展示您是如何调用 SQL*Loader 的,或者生成的控制文件实际上是什么样的(尽管看起来应该没问题)。你做了什么调试?
  • 也许您可以随后显示整个脚本,以及运行它的输出,以及一个日志文件(如果生成的话)。从您在评论中显示的调用(也请在问题中编辑),调用看起来没问题,所以也许您稍后在脚本中覆盖了控制文件,或者一开始就无法覆盖控制文件。需要更多信息。

标签: oracle shell unix sql-loader


【解决方案1】:

您的控制文件看起来不错。 您如何使用 SQL*Loader?

你可以用这样的命令来启动它:

sqlldr control=$CTLDIR/test.ctl userid=[username]/[password]@[connect string]

【讨论】:

  • 这就是我使用 sqlldr $test control=$CTLDIR/test.ctl data=$INDIR/${fileName} log=$sqlldrLog 的方式。其中 $test 包含用户 ID/密码。
  • 这应该可以。你用的是哪个版本的sql*loader?
  • $ sqlldr testuser/testuser control=test.ctl data=test.data SQL*Loader: Release 11.2.0.2.0 - 生产于 Di Jun 16 12:48:44 2015 版权所有 (c) 1982 ,2009 年,甲骨文和/或其附属公司。版权所有。已达到提交点 - 逻辑记录计数 1
猜你喜欢
  • 1970-01-01
  • 2019-12-15
  • 1970-01-01
  • 2021-10-17
  • 2012-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多