Exemple ci-dessous

  1. J'utilise le logiciel Filmotech pour ma videothèque
  2. J'avais commencé avec la base interne SQLlite
  3. Mais je préfère utiliser MySQL puisque j'ai le choix
  4. Je génère donc une base de donnée "filmotech" que le logiciel n'est pas capable de créer si elle n'existe pas
  5. Le logiciel alors crée les tables (vides)
  6. J'ai exporté le peu de films (3) en un fichier XML
  7. Que je place dans le dossier de la base donnée filmotech de MySQL Data
  8. J'adapte alors l'exemple donné dans refman :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
mysql> LOAD XML LOCAL INFILE 'person.xml'
    ->   INTO TABLE person
    ->   ROWS IDENTIFIED BY '<person>';
Query OK, 6 rows affected (0.00 sec)
Records: 6 Deleted: 0 Skipped: 0 Warnings: 0
sous la forme adaptée à mon cas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
mysql> LOAD XML LOCAL INFILE `Filmotech_Films.XML`
    -> INTO TABLE films
    -> ROWS IDENTIFIED BY `<Film>`;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
near '`Filmotech_Films.XML`
INTO TABLE films
ROWS IDENTIFIED BY `<Film>`' at line 1
Donc ça ne fonctionne pas (erreur de syntaxe) et je me demande bien pourquoi.

Deux heures de recherches bidouilleuses plus tard, je trouve la solution : il ne faut pas utiliser ces - rongtudju ! - d'apostrophes inversées (en fait la touche morte d'accent grave Alt Gr-7, qui ne sert à rien dans les claviers français) qu'on dit pourtant dans le manuel qu'il faut les utiliser pour encadrer des chaînes. En réalité il faut utiliser des apostrophes standard (touche 4 en mode minuscules).

Ceci étant - enfin - trouvé, autre problème : le fichier XML, lui, n'est pas trouvé ! Il est pourtant dit qu'il suffit de le mettre dans les datas de MySQL, mais c'est un bobard ! Qu'il soit dans la racine de data ou dans le dossier de la base, c'est pareil : introuvable.

Qu'à cela ne tienne, me dis-je il suffit de mettre son chemin complet et il sera bien obligé de le trouver. Oui, mais à ceci près qu'il ne supporte pas les barres obliques inversées et qu'il se dépêche de les supprimer donc, bis repetita, fichier non trouvé. Agacerie typiquement unixienne contre les windowsiens. Il faut donc mettre des barres obliques normales pour séparer les dossiers.

Enfin ça marche ! Mais il m'a fallu deux heures pour résoudre ces vacheries. C'est donc (auto)résolu.

Dernière chose : j'ai amorcé une discussion à ce sujet : dans Workbench 6.2 la base de donnée système mysql est invisible. Agaçant à plus d'un titre, en particulier parce que j'y ai mis une procédure stockée que je suis donc bien en peine de récupérer.