我需要使用sql加载器将一些数据导入表中。
@echo off
for %%i in ("C:\Users\test\*.csv") do (
SET tmpFile=%%~ni
echo load data >controlfile.ctl
echo INFILE 'controlfile.ctl' >>controlfile.ctl
echo into table TABLE_NAME >>controlfile.ctl
echo append >>controlfile.ctl
echo fields terminated by ',' >>controlfile.ctl
echo OPTIONALLY ENCLOSED BY '"' AND '"' >>controlfile.ctl
echo trailing nullcols >>controlfile.ctl
echo ( >>controlfile.ctl
echo COLUMN1 CHAR(4000), >>controlfile.ctl
echo COLUMN2 CHAR(4000), >>controlfile.ctl
echo COLUMN3 CHAR(4000), >>controlfile.ctl
echo FILE_NAME %tmpFile% >>controlfile.ctl
echo ) >>controlfile.ctl
sqlldr db_user/db_pw CONTROL='C:\test\controlfile.ctl' LOG='C:\Users\test\mylog.log' skip=1
)
pause
无法将参数传递给控制文件。在我的例子中,我想将文件名保存在表中的列上。因此,我需要动态创建控制文件,因为通过这种方式,我可以将文件名作为参数(tmpFile)传递
然而,我被困住了,不能再往前走了。
首先,将生成控制文件,但大部分内容缺失:
COLUMN1 CHAR(4000
COLUMN2 CHAR(4000),
COLUMN3 CHAR(4000),
FILE_NAME test
)
The process cannot access the file because it is being used by another process.
暂时忽略第二部分(或者你可能知道我为什么会出现这个错误)……为什么我的控制文件中缺少大部分内容?有人能帮我吗?我被困住了,不知道该怎么办