SQL Loader INFILE,文件位于不同的路径中

时间:2017-08-29 07:56:46

标签: sh sql-loader

我在目录Option Explicit Private Sub CommandTest_Click() Dim HHs As String HHs = Mid("2345", 1, 2) If Val(HHs) > 23 Then MsgBox "Log the Error that needs to be logged" End If End Sub 中有一个SQL Loader控制文件。

输入文件位于目录/opt/TEST/app/ITT/script/ctl/

SQL Loader控制文件不能保留在输入文件的同一目录中,所以我必须把它放到正确的目录中。

在控制文件中编写此代码是否正确?

/opt/TEST/app/ITT/in/

我更愿意在不编写整个目录的情况下更轻松地做一些事情,但只是从LOAD DATA INFILE '/opt/TEST/app/ITT/in/FILE1.ready' BADFILE '/opt/TEST/app/ITT/in/FILE1.bad' DISCARDFILE '/opt/TEST/app/ITT/in/FILE1.dsc' 返回到/ctl/然后进入/ITT/目录但我没有知道该怎么做。

2 个答案:

答案 0 :(得分:0)

find /u01/*/*/tmp/*_OCI/*.csv | while read INFILE
do
echo load data                                  >  /u01/tmp/temp_ctl.ctl
echo infile "'$INFILE'"                         >> /u01/tmp/temp_ctl.ctl
echo append into table cons_sqldata             >> /u01/tmp/temp_ctl.ctl
echo fields terminated by "','"                 >> /u01/tmp/temp_ctl.ctl
echo '('db_name,                                >> /u01/tmp/temp_ctl.ctl
echo cons_grp,                                  >> /u01/tmp/temp_ctl.ctl
echo sql_count,                                 >> /u01/tmp/temp_ctl.ctl
echo sql_execs')'                               >> /u01/tmp/temp_ctl.ctl
chmod 755 /u01/tmp/temp_ctl.ctl
echo
echo invoking the sql*loader
echo using table $INFILE
sqlldr userid=test/test#123@test_f control=/u01/tmp/temp_ctl.ctl
echo "****************************************************************"
done

答案 1 :(得分:0)

根据此文档,INFILE 路径必须用单引号包围:

https://docs.oracle.com/cd/B10501_01/server.920/a96652/ch05.htm#1008018

示例:

INFILE 'c:/topdir/subdir/datafile.dat'