Sie scheinen ein paar Möglichkeiten zu verwechseln, dies zu tun. Der Fehler liegt daran, dass versucht wird, "test_file.xml"
zu interpretieren innerhalb von LOBFILE()
als Feldbezug.
Wenn Sie wissen, dass Sie nur ein XML-Dokument aus einer einzigen Textdatei laden, können Sie Ihre Steuerdatei erstellen:
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
Die BEGINDATA
Abschnitt hat eine Zeile mit einem Füllzeichen für jedes XML-Dokument in der Datei, und da es nur eines gibt, gibt es ein einziges Füllzeichen.
Beachten Sie die CONSTANT
Dadurch wird nach einer Datei mit diesem Namen gesucht, nicht nach einem Feld. Die Protokolldatei zeigt diesen statischen Namen:
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.
Um ein Feld zu verwenden, hätten Sie eine Datendatei mit dem Dateinamen, nennen wir sie test_loading.dat
passend zum Steuerdateinamen, der Folgendes enthält:
test_file.xml
Und eine Steuerdatei, die das als INFILE und den Inhalt ihres ersten Felds als Dateinamen verwendet:
LOAD DATA
INFILE test_loading.dat
append INTO TABLE TEST_XML
XMLType(XMLDATA)
FIELDS
(
filename FILLER CHAR(30),
XMLDATA LOBFILE(filename) TERMINATED BY EOF
)
Dieses Mal zeigt die Protokolldatei, dass der Name dynamisch abgerufen wird:
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.
Lesen Sie mehr in der Dokumentation .
Entweder wird für Sie arbeiten. Da Sie in Ihrem Beispiel nur eine einzige Datei haben, ist die erste Version möglicherweise etwas einfacher, aber wenn Sie mehrere Dateien laden (mit einer Tabellenzeile pro Datei), ist die zweite Version nützlicher.