Подтвердить что ты не робот

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

У меня есть 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-запросов встроенных функций, чтобы он пропускал столбец идентификатора во время импорта и полагался на функцию автоматического приращения для столбца id? Есть ли более разумный способ обработки импорта XML файлов в MySQL? Может быть, есть лучший оператор, который позволяет указать сопоставление столбцов?

Спасибо!

4b9b3361

Ответ 1

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

LOAD XML LOCAL INFILE '/pathtofile/file.xml' 
INTO TABLE my_tablename(personal_number, firstname, ...); 

Ответ 2

Поскольку идентификатор является автоматическим приращением, вы также можете указать ID = NULL as,

LOAD XML LOCAL INFILE '/pathtofile/file.xml' INTO TABLE my_tablename SET ID = NULL;

Ответ 3

Вот запись в блоге, которая показывает, как вы можете автоматизировать весь процесс конвертации, используя Flexter как сервис. В нем также показано, как можно легко замаскировать/скрыть точки данных в документах XML https://sonra.io/2019/08/13/converting-and-masking-connexo-xml-to-mysql/

Отказ от ответственности: я работаю на Сонру