Anda tampaknya mencampuradukkan beberapa cara untuk melakukan ini. Kesalahannya adalah karena mencoba menafsirkan "test_file.xml"
di dalam LOBFILE()
sebagai referensi lapangan.
Jika Anda tahu bahwa Anda hanya akan memuat satu dokumen XML dari satu file teks, Anda dapat membuat file kontrol Anda:
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
bagian memiliki baris dengan karakter pengisi untuk setiap dokumen XML dalam file, dan karena hanya ada satu, ada satu pengisi.
Perhatikan CONSTANT
yang membuatnya mencari file bernama itu, bukan bidang. File log menunjukkan nama statis itu:
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.
Untuk menggunakan bidang Anda akan memiliki file data dengan nama file, sebut saja test_loading.dat
untuk mencocokkan nama file kontrol, yang berisi:
test_file.xml
Dan file kontrol yang menggunakannya sebagai INFILE, dan konten bidang pertamanya sebagai nama file:
LOAD DATA
INFILE test_loading.dat
append INTO TABLE TEST_XML
XMLType(XMLDATA)
FIELDS
(
filename FILLER CHAR(30),
XMLDATA LOBFILE(filename) TERMINATED BY EOF
)
Kali ini file log menunjukkan nama sedang diambil secara dinamis:
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.
Baca selengkapnya di dokumentasi .
Keduanya akan bekerja untuk Anda. Karena Anda hanya memiliki satu file dalam contoh Anda, versi pertama mungkin sedikit lebih sederhana, tetapi jika Anda akan memuat banyak file (dengan baris tabel per file), versi kedua lebih berguna.