Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

एक्सएमएल डेटा लोड हो रहा है यह कहते हुए त्रुटि मिलती है कि मेरी नियंत्रण फ़ाइल एक गैर-मौजूद फ़ील्ड का संदर्भ देती है

ऐसा लगता है कि आप ऐसा करने के कुछ तरीकों को मिला रहे हैं। त्रुटि इसलिए है क्योंकि यह "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.

दस्तावेज़ीकरण में और पढ़ें

या तो आपके लिए काम करेगा। जैसा कि आपके उदाहरण में केवल एक फ़ाइल है, पहला संस्करण थोड़ा आसान हो सकता है, लेकिन यदि आप एकाधिक फ़ाइलें लोड कर रहे हैं (प्रति फ़ाइल एक तालिका पंक्ति के साथ) तो दूसरा संस्करण अधिक उपयोगी है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ईबीएस 12.2 विजन इंस्टेंस की स्थापना कैसे करें

  2. webLogic सर्वर के मूल JSF कार्यान्वयन को अक्षम करें और myfaces कार्यान्वयन का उपयोग करें

  3. सी # के साथ प्रक्रिया को कॉल करते समय मुझे ओरेकल त्रुटि क्यों मिलती है?

  4. Oracle में पहचान कॉलम को कैसे रीसेट करें

  5. विभिन्न स्कीमाओं के माध्यम से कैसे लूप करें और प्रत्येक पर कुछ एसक्यूएल निष्पादित करें?