我在目录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/
目录但我没有知道该怎么做。
答案 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'