sQLLDER(11g)を使用してテーブルにデータをロードしています。列の1つはBLOBで、別のファイルからロードする必要があります。ファイルの名前はテーブルのフィールドによって異なります。ファイルをロードするには、フルパスを連結する必要があります。ですから、ファイルのフルパスを得るためには、フォルダパス '/ oradata/val /'をID_RECOMMENDATIONフィールドと拡張子 '.dat'に連結する必要があります。たとえば、ID_RECOMMENDATIONフィールドが '1'の場合、ファイル名は '/oradata/val/1.dat'になります。私は、元のファイルを変更することはできませんので、私はこのような何か使用して、ファイルのフルパスを取得するために式を使用する:SQLLDR:lobfileの動的ロードによるフルパスとファイル名の連結
LOAD DATA
INFILE *
INTO TABLE t_val_recommendation append
fields terminated by ';'
(
ID_RECOMMENDATION,
ID_PROFILE ,
START_DATE date 'yyyymmdd',
LOBF_00001 BOUNDFILLER"trim('/oradata/val/'||:ID_RECOMMENDATION||'.dat')",
PARAGRAPHS LOBFILE (LOBF_00001) TERMINATED BY EOF,
ASSET_ALLOCATION
)
をしかし、パスの連結を理解していないようですし、ファイル名。どうやってやるの?
おかげ
は
これは、テーブルスキーマである(意味を明確にするために編集):
ID_RECOMMENDATION NUMBER(10) NOT NULL,
ID_PROFILE VARCHAR2(10 BYTE) NOT NULL,
START_DATE DATE NOT NULL,
PARAGRAPHS SYS.XMLTYPE,
ASSET_ALLOCATION SYS.XMLTYPE
そして、これは、ロードする行のようになります。
1;CONSERVATIVE;20120301;<aa>This is my asset allocation</aa>
「LOBF_00001」列の読み込みをスキップしようとしているようですが、後でそれを使用したいのですか? –
は正確ではありません。/oradata/valというフォルダにあるxmlファイルをロードしたいのですが、その名前はレコードのIF_RECOMMENDATIONフィールドです。パスとファイル名の両方を連結してフィールドPARAGRAPHSにロードすることができます。 –
BEGINDATA行の後にCTLの1つのサンプル行を追加して、データマップのどのフィールドがわかるようにしてくださいどのデータベースの列に – Benoit