我想在本地命令执行sqlldr 导远程linux环境下的txt文件到远程linux系统下的oracle数据库内。
a.ctl文件如下:
Load DATA 
INFILE '/srv/member.txt' 
INTO TABLE member 
(id Integer EXTERNAL TERMINATED BY whitespace,username char TERMINATED BY whitespace,idcard char TERMINATED BY whitespace)命令如下:
$sqlldr nydw_dev/nydw_dev@dw control='e:\c.ctl' log='e:\c.log' direct=true;执行后日志报错:SQL*Loader: Release 11.1.0.6.0 - Production on 星期一 11月 10 17:10:05 2008Copyright (c) 1982, 2007, Oracle.  All rights reserved.控制文件:      e:\c.ctl
数据文件:      /srv/member.txt
  错误文件:    e:\member.bad
  废弃文件:    未作指定
 
(可废弃所有记录)要加载的数: ALL
要跳过的数: 0
允许的错误: 50
继续:    未作指定
所用路径:       直接表 MEMBER,已加载从每个逻辑记录
插入选项对此表 INSERT 生效   列名                        位置      长度  中止 包装数据类型
------------------------------ ---------- ----- ---- ---- ---------------------
ID                                  FIRST     *  WHT      CHARACTER            
USERNAME                             NEXT     *  WHT      CHARACTER            
IDCARD                               NEXT     *  WHT      CHARACTER            SQL*Loader-500:  无法打开文件 (/srv/member.txt)
SQL*Loader-553:  未找到文件
SQL*Loader-509:  系统错误: 系统找不到指定的文件。
SQL*Loader-2026:  加载因 SQL 加载程序无法继续而被终止。请问怎么回事?

解决方案 »

  1.   

    本地windows文件导到本地可以的,2000万行只要1分钟。
    到了远程就不行,是不是远程linux系统策略不允许访问所以找不到文件造成的?
      

  2.   

    $sqlldr nydw_dev/nydw_dev@dw control='e:\c.ctl' log='e:\c.log' direct=true; 
    明显有问题,linux下怎么能访问windows下的文件呢?
    应该在windows下开个dos窗口,然后
    c:\>$sqlldr nydw_dev/nydw_dev@dw control='e:\c.ctl' log='e:\c.log' direct=true
      

  3.   

    /srv/member.txt 文件存在吗?相关路径要改成linux下的目录