Oracleは、XML形式のファイルの標準化されたアップロードを提供していますか?適切な制御ファイルの内容でsqlldrを実行するだけで、XML出力に使用される標準形式(structure = ROWSET/ROW/columname
)をテーブルに再度アップロードできると思いました。
しかし、これについてはWebのどこにも見つかりません。試行後のエラーメッセージは、XMLをXMLタイプの形式のテーブルにアップロードすることしかできないことを示しているようです。ここでは、プレーンテーブルにデータをアップロードするだけで、データを提供します。 XML形式で。
質問する
10591 次
2 に答える
1
標準化されたオプションはありませんが、この特定の形式でそれを行うことができます。テーブルがある場合:
CREATE TABLE test_tab (
id NUMBER,
text VARCHAR2(50)
);
そして、test_tab.xml
ファイル内のあなたの記録:
<ROWSET>
<ROW>
<ID>1</ID>
<TEXT>This is some text</TEXT>
</ROW>
<ROW>
<ID>2</ID>
<TEXT>This is some more text</TEXT>
</ROW>
<ROW>
<ID>3</ID>
<TEXT>This is some other text</TEXT>
</ROW>
<ROW>
<ID>4</ID>
<TEXT>This is also some text</TEXT>
</ROW>
</ROWSET>
そして制御ファイルtest_tab.ctl
:
LOAD DATA
INFILE 'test_tab.xml'
CONCATENATE 4
INTO TABLE test_tab
(
dummy FILLER CHAR(15) TERMINATED BY "<ROW>",
id CHAR(10) ENCLOSED BY "<ID>" AND "</ID>",
text CHAR(40) ENCLOSED BY "<TEXT>" AND "</TEXT>"
)
できるよ:
sqlldr usr/pwd control=test_tab.ctl
Commit point reached - logical record count 4
SELECT * FROM test_tab;
ID TEXT
---------- --------------------------------------------------
1 This is some text
2 This is some more text
3 This is some other text
4 This is also some text
Oracleが参照できるディレクトリに配置すると、同じファイルから外部テーブルを作成することもできます。
CREATE TABLE test_tab (
id NUMBER,
text VARCHAR2(50)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY some_dir
ACCESS PARAMETERS
(
RECORDS DELIMITED BY "</ROW>"
FIELDS
(
dummy CHAR(15) TERMINATED BY "<ROW>",
id CHAR(10) ENCLOSED BY "<ID>" AND "</ID>",
text CHAR(40) ENCLOSED BY "<TEXT>" AND "</TEXT>"
)
)
LOCATION ('test_tab.xml')
)
PARALLEL
REJECT LIMIT UNLIMITED;
Table created.
SELECT * FROM test_tab;
ID TEXT
---------- --------------------------------------------------
1 This is some text
2 This is some more text
3 This is some other text
4 This is also some text
于 2012-08-31T20:49:34.470 に答える
1
いいえ、SQL*Loader は「フラット」ファイルのみを処理できます。
1 つのオプションは、形式をテキスト ファイルに変換する XSLT 変換を記述し、ROWSET/ROW/column
それをターゲット テーブルにインポートすることです。
もう 1 つのオプションは、XML を 1 つの行にインポートしてから、Oracle の XML 関数を使用してそのステージング テーブルからリレーショナル結果を選択し、それを実際のテーブルに挿入することです。
于 2012-08-31T07:54:29.340 に答える