J'ai un fichier XML qui ressemble à ceci:
<?xml version="1.0" encoding="UTF-8"?>
<resultset statement="YOUR SQL STATEMENTS TO GENERATE THIS XML FILE" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<field name="personal_number">539</field>
<field name="firstname">Name</field>
<field name="lastname">Surname</field>
<field name="email">email.domain.com</field>
<field name="start_time">2011-04-02 13:30:00</field>
<field name="end_time">2011-04-02 18:15:00</field>
<field name="employee_category">1,2,4,5,22,37,38,39,41,43,44</field>
</row>
<row>
<field name="personal_number">539</field>
<field name="firstname">Name</field>
<field name="lastname">Surname</field>
<field name="email">email.domain.com</field>
<field name="start_time">2011-04-02 13:30:00</field>
<field name="end_time">2011-04-02 18:15:00</field>
<field name="employee_category">1,2,4,5,22,37,38,39,41,43,44</field>
</row>
<row>
<field name="personal_number">539</field>
<field name="firstname">Name</field>
<field name="lastname">Surname</field>
<field name="email">email.domain.com</field>
<field name="start_time">2011-04-02 13:30:00</field>
<field name="end_time">2011-04-02 18:15:00</field>
<field name="employee_category">1,2,4,5,22,37,38,39,41,43,44</field>
</row>
J'essaie de l'importer dans MySQL en utilisant l'instruction SQL:
use databasename;
LOAD XML LOCAL INFILE '/pathtofile/file.xml' INTO TABLE my_tablename;
La table my_tablename contient les champs suivants:
id (auto increment id)
personal_number(varchar)
firstname(varchar)
lastname(varchar)
email(varchar)
start_time(varchar)
end_time(varchar)
employee_category(varchar)
J'ai l'erreur: Code d'erreur: 1136 Le nombre de colonnes ne correspond pas au nombre de valeurs à la ligne 1
J'utilise MySQL 5.1.56
Je suppose que cette erreur se produit car la table de base de données a un identifiant de champ, qui n'est pas présent dans le fichier XML. Comment est-il possible d'importer ce fichier XML à l'aide de requêtes MySQL de fonctions intégrées, de sorte qu'il ignore la colonne id lors de l'importation et s'appuie sur la fonction d'incrémentation automatique pour la colonne id? Existe-t-il un moyen plus intelligent de gérer les importations de fichiers XML dans MySQL? Peut-être il y a une meilleure déclaration qui permet de spécifier le mappage de colonne?
Merci!
vous pouvez spécifier des champs comme ceci:
LOAD XML LOCAL INFILE '/pathtofile/file.xml'
INTO TABLE my_tablename(personal_number, firstname, ...);
Comme ID est une incrémentation automatique, vous pouvez également spécifier ID = NULL comme,
LOAD XML LOCAL INFILE '/pathtofile/file.xml' INTO TABLE mon_nom de table SET ID = NULL;