0

CTL ファイルを使用して、ファイルに保存されているデータを Oracle データベースの特定のテーブルにロードしています。現在、次のコマンド ラインを使用してローダー ファイルを起動します。

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

CTL ファイルで取得する特定のパラメータを使用できるかどうかを知りたいです。

また、テーブルを埋めるために CTL が使用するデータ ファイルの名前を取得することは可能ですか?また、各行に挿入したいと思います。現在、以前に挿入されたレコードを更新する手順を呼び出す必要があります。

どんな助けでも大歓迎です!

4

1 に答える 1

0

私が知っているように、パラメーターをctrlの変数として渡す方法はありません。
ただし、ctl で定数を使用し、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

于 2010-12-29T09:46:08.497 に答える