मुझे LOAD XML INFILE
. का उपयोग करके ऐसा करने का कोई तरीका नहीं मिला सीडीएटीए सामग्री को संरक्षित करते समय। हालांकि, निम्नलिखित काम करता है और अच्छे पुराने LOAD DATA INFILE
का उपयोग करता है ExtractValue()
. के साथ एक ही काम पूरा करने के लिए:
अगर हमारे पास आपकी उदाहरण फ़ाइल और यह तालिका है:
CREATE TABLE `yahootable` (
`id` int(11) NOT NULL PRIMARY KEY,
`various` text,
`message` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8
;
फिर इस कथन को चलाने से फ़ाइल की सामग्री तालिका में आयात हो जाएगी:
LOAD DATA INFILE
'/tmp/yahootable.xml'
INTO TABLE
yahootable
CHARACTER SET 'utf8'
LINES STARTING BY '<row>' TERMINATED BY '</row>'
(@tmp)
SET
id = ExtractValue(@tmp, '//id'),
various = ExtractValue(@tmp, '//various'),
message = ExtractValue(@tmp, '//message')
;
यह LOAD DATA INFILE को बताकर काम करता है कि प्रत्येक <row>...</row>
एक तार्किक 'लाइन' है, जिसे यह स्थानीय चर में संग्रहीत करता है @tmp
. फिर हम इसे ExtractValue
को पास कर देते हैं। XML फ़्रैगमेंट के रूप में कार्य करें और उसमें से उन मानों का चयन करें जिन्हें हम उपयुक्त XPath अभिव्यक्तियों का उपयोग करके चाहते हैं।