使用CTL参数

时间:2010-12-29 09:33:51

标签: oracle ctl

我正在使用CTL文件将存储在文件中的数据加载到Oracle数据库中的特定表中。 目前,我使用以下命令行启动加载程序文件:

sqlldr user/pwd@db data=my_data_file control=my_loader.ctl

我想知道是否可以在CTL文件中使用指定参数。

此外,是否可以检索CTL用来填充表格的数据文件的名称?我还想为每一行插入它。我目前必须调用一个程序来更新以前插入的记录。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

据我所知,没有任何方法可以将参数传递给ctrl中的变量。
但是你可以在ctl中使用constant并修改clt文件来为每个加载时间更改该常量值(在ctl文件内容中)。

编辑:更具体。

my_loader.ctl:

--options
load data
infile 'c:\$datfilename$' --this is optional, you can specify here or from command line

into table mytable
fields....
(
datafilename constant '$datfilename$', -- will be replace by real datafname each load
datacol1  char(1),
....
)

dataload.bat:假设$ datfilename $是将被数据文件名替换的文本。

::sample copy
copy my_loader.ctl my_loader_temp.ctl

::replace the name of datafile (mainly the content to load into table's data column)
findandreplace my_loader_temp.ctl "$datafilename$" "%1"

::load
sqlldr user/pwd@db data=%1 control=my_loader_temp.ctl
::or with data be obmitted if you specified by infile in control file.
sqlldr user/pwd@db control=my_loader_temp.ctl

使用:dataload.bat mydatafile_2010_10_10.txt