Как импортировать файл XML в таблицу базы данных MySQL, используя XML_LOAD ();функция - PullRequest
46 голосов
/ 30 марта 2011

У меня есть XML-файл, который выглядит следующим образом:

    <?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>

Я пытаюсь импортировать его в MySQL с помощью оператора SQL:

use databasename;
LOAD XML LOCAL INFILE '/pathtofile/file.xml' INTO TABLE my_tablename;

Таблица my_tablename имеет следующие поля:

id (auto increment id)
personal_number(varchar)
firstname(varchar) 
lastname(varchar)
email(varchar) 
start_time(varchar)
end_time(varchar)
employee_category(varchar)

Я получаю сообщение об ошибке: Код ошибки: 1136 Количество столбцов не соответствует значению в строке 1

Я использую MySQL 5.1.56

Я предполагаю, что эта ошибка происходит, потому что таблица базы данных имеет идентификатор поля, которого нет в файле XML.Как можно импортировать этот XML-файл, используя запросы MySQL встроенных функций, так что он пропускает столбец идентификатора во время импорта и использует функцию автоматического увеличения для столбца идентификатора?Есть ли какой-нибудь умный способ обработки импорта файлов XML в MySQL?Может быть, есть лучшее утверждение, которое позволяет указать сопоставление столбцов?

Спасибо!

Ответы [ 2 ]

46 голосов
/ 30 марта 2011

вы можете указать такие поля, как это:

LOAD XML LOCAL INFILE '/pathtofile/file.xml' 
INTO TABLE my_tablename(personal_number, firstname, ...); 
5 голосов
/ 02 апреля 2014

Так как ID - автоинкремент, вы также можете указать ID = NULL как,

ЗАГРУЗИТЬ ЛОКАЛЬНЫЙ ИНФИЛЬ XML '/pathtofile/file.xml' В СТОЛ my_tablename SET ID = NULL;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...