你似乎混淆了一些做法。該錯誤是因爲它試圖將LOBFILE()
中的"test_file.xml"
解釋爲字段參考。
如果你知道你將只從單一的文本文件中加載一個XML文檔,你可以讓你的控制文件:
LOAD DATA
INFILE *
append INTO TABLE TEST_XML
XMLType(XMLDATA)
FIELDS
(
FILL FILLER CHAR(1),
XMLDATA LOBFILE(CONSTANT test_file.xml) TERMINATED BY EOF
)
BEGINDATA
0
的BEGINDATA
部分具有對文件中的每個XML文檔填充字符的行,因爲只有一個,所以只有一個填充物。
請注意CONSTANT
,它使它尋找一個名爲的文件,而不是字段。該日誌文件顯示靜態名稱:
Table TEST_XML, loaded from every logical record.
Insert option in effect for this table: APPEND
Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
FILL FIRST 1 CHARACTER
(FILLER FIELD)
XMLDATA DERIVED * EOF CHARACTER
Static LOBFILE. Filename is test_file.xml
Table TEST_XML:
1 Row successfully loaded.
0 Rows not loaded due to data errors.
0 Rows not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
要使用現場你將不得不與文件名的數據文件,讓我們把它叫做test_loading.dat
相匹配的控制文件名,其中包含:
test_file.xml
以及使用,作爲INFILE,其第一場的作爲文件名的內容的控制文件:
LOAD DATA
INFILE test_loading.dat
append INTO TABLE TEST_XML
XMLType(XMLDATA)
FIELDS
(
filename FILLER CHAR(30),
XMLDATA LOBFILE(filename) TERMINATED BY EOF
)
這一次日誌文件顯示的名稱被動態檢索:
Table TEST_XML, loaded from every logical record.
Insert option in effect for this table: APPEND
Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
FILENAME FIRST 30 CHARACTER
(FILLER FIELD)
XMLDATA DERIVED * EOF CHARACTER
Dynamic LOBFILE. Filename in field FILENAME
Table TEST_XML:
1 Row successfully loaded.
0 Rows not loaded due to data errors.
0 Rows not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
Read more in the documentation。
兩者都適合你。由於在示例中只有一個文件,所以第一個版本可能會稍微簡單一些,但是如果您要加載多個文件(每個文件使用一個表格行),則第二個版本更有用。
第一種方法工作正常,非常感謝。 – Kumar