LOAD XML INFILE
を使用してこれを行う方法が見つかりませんでした CDATAの内容を保持しながら。ただし、以下は機能し、古き良き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')
;
これは、LOADDATAINFILEに各<row>...</row>
を通知することで機能します。 は論理的な「行」であり、ローカル変数@tmp
に格納されます。 。次に、これをExtractValue
に渡します。 XMLフラグメントとして機能し、適切なXPath式を使用して必要な値を選択します。