Utiliser XML avec MySQL 5.1 (part 2/5)

juillet 29, 2009
Tags: ,

(<- précédent)

Insérer du XML dans MySQL

Un fichier XML, n’est finalement qu’un fichier contenant du texte et insérer du texte dans un SGBDR, est loin d’être la chose la plus difficile. Une simple requête INSERT fait l’affaire. Cela nous donne quelque chose comme ceci :

INSERT INTO ma_table (champ_texte) VALUES (‘<?xml version= »1.0″?>…’)

Cela dit, si le flux XML est important, cette façon de faire n’est guère pratique. En fait, la méthode la plus simple est d’utiliser la fonction MySQL: LOAD_FILE().

Cette fonction prend en argument un fichier et renvoie son contenu sous la forme d’une chaîne de caractères. A noter que vous devez avoir le droit FILE pour exécuter cette commande, et que le fichier doit se trouver sur la machine hôte (en local):

Insérer un fichier XML dans MySQL

mysql> CREATE DATABASE IF NOT EXISTS xml;
mysql> USE xml;
mysql> CREATE TABLE rss (
id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
type CHAR(30) NOT NULL,
flux_rss TEXT )
ENGINE=MyISAM;
mysql> INSERT INTO xml.rss VALUES (NULL, ‘cinema’, LOAD_FILE(‘./cinema.xml’));

Arrêtons nous quelques instants sur la commande LOAD XML qui est apparue avec la version 6 de MySQL (MySQL 6.0.3). Cette commande permet d’importer simplement le contenu d’un fichier XML dans une table. Elle a une syntaxe assez proche de la commande LOAD DATA que vous connaissez peut-être, et qui elle aussi facilite le travail lorsque le besoin d’importer des données d’un fichier texte se fait sentir. L’exemple suivant nous montre un exemple d’utilisation de LOAD XML:

Utilisation de la commande LOAD XML de MySQL 6

mysql6> USE xml;
mysql6> CREATE TABLE consultant (
id_consultant TINYINT UNSIGNED NOT NULL PRIMARY KEY,
nom CHAR(40),
prenom CHAR(40)
)ENGINE=MyISAM;
mysql6> LOAD XML LOCAL INFILE ‘consultant .xml’
INTO TABLE consultant
ROWS IDENTIFIED BY ‘<consultant>’;
mysql6> SELECT * FROM consultant;
+—————+——–+—————–+
| id_consultant | nom | prenom |
+—————+——–+—————–+
| 1 | Dasini | Olivier |
| 2 | Allard | Fabien |
| 3 | Pascal | Borghino |
| 4 | Arnaud | Gadal |
+—————+——–+—————–+

(à suivre… utiliser XML avec MySQL 5.1 : Interroger un flux XML avec Xpath)


Leave a Reply