Du lader til at blande et par måder at gøre dette på. Fejlen skyldes, at den forsøger at fortolke "test_file.xml"
inde i LOBFILE()
som feltreference.
Hvis du ved, at du kun vil indlæse ét XML-dokument fra en enkelt tekstfil, kan du lave din kontrolfil:
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
sektionen har en række med et fyldtegn for hvert XML-dokument i filen, og da der kun er én, er der et enkelt fyldstof.
Bemærk CONSTANT
hvilket får den til at lede efter en fil kaldet det, ikke et felt. Logfilen viser det statiske navn:
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.
For at bruge et felt vil du have en datafil med filnavnet, lad os kalde det test_loading.dat
for at matche kontrolfilnavnet, som indeholder:
test_file.xml
Og en kontrolfil, der bruger det som INFILE, og indholdet af dets første felt som filnavn:
LOAD DATA
INFILE test_loading.dat
append INTO TABLE TEST_XML
XMLType(XMLDATA)
FIELDS
(
filename FILLER CHAR(30),
XMLDATA LOBFILE(filename) TERMINATED BY EOF
)
Denne gang viser logfilen, at navnet hentes dynamisk:
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.
Begge vil virke for dig. Da du kun har en enkelt fil i dit eksempel, kan den første version være lidt enklere, men hvis du vil indlæse flere filer (med en tabelrække pr. fil), er den anden version mere nyttig.