ऐसा लगता है कि आप ऐसा करने के कुछ तरीकों को मिला रहे हैं। त्रुटि इसलिए है क्योंकि यह "test_file.xml"
. की व्याख्या करने का प्रयास कर रहा है अंदर LOBFILE()
फ़ील्ड संदर्भ के रूप में।
यदि आप जानते हैं कि आप एक टेक्स्ट फ़ाइल से केवल एक 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.
या तो आपके लिए काम करेगा। जैसा कि आपके उदाहरण में केवल एक फ़ाइल है, पहला संस्करण थोड़ा आसान हो सकता है, लेकिन यदि आप एकाधिक फ़ाइलें लोड कर रहे हैं (प्रति फ़ाइल एक तालिका पंक्ति के साथ) तो दूसरा संस्करण अधिक उपयोगी है।