MySQL имеет хороший оператор: НАГРУЗКА XML LOCAL INFILEНАГРУЗКИ XML LOCAL INFILE с противоречивыми именами столбцов
Например, если у вас есть эта таблица:
CREATE TABLE person (
person_id INT NOT NULL PRIMARY KEY,
fname VARCHAR(40) NULL,
lname VARCHAR(40) NULL
);
и следующий файл XML под названием person.xml :
<list>
<person>
<person_id>1</person_id>
<fname>Mikael</fname>
<lname>Ronström</lname>
</person>
<person>
<person_id>2</person_id>
<fname>Lars</fname>
<lname>Thalmann</lname>
</person>
</list>
Вы можете сделать это:
LOAD XML LOCAL INFILE 'person.xml'
INTO TABLE person
ROWS IDENTIFIED BY '<person>';
Мой вопрос: что, если имена столбцов в XML-файле были разными, чем в таблице? Например:
<list>
<person>
<PersonId>1</PersonId>
<FirstName>Mikael</FirstName>
<LastName>Ronström</LastName>
</person>
<person>
<PersonId>2</PersonId>
<FirstName>Lars</FirstName>
<LastName>Thalmann</LastName>
</person>
</list>
Как вы можете сделать то же самое с оператором MySQL без манипуляции с XML-файлом? Я искал везде, но не мог найти ответа.
Это очень хорошо работать вокруг. Однако, поскольку я прокомментировал ответ Билла Карвина, есть еще одна проблема с оператором LOAD XML. Он не принимает минимальные пустые теги, такие как . Можете ли вы придумать решение этой проблемы? –
stepanian
Я никогда не работал с 'LOAD XML', поэтому я только что получил обоснованное предположение об этом ответе. Поэтому нет, к сожалению, я не знаю решения этой проблемы, кроме загрузки XML-файла на другом языке (например, PHP), анализа его, а затем отправки результирующего запроса в базу данных. –
FYI Ошибка загрузки тегов была ошибкой и была исправлена: _Prior to MySQL 5.5.46, LOAD XML не обрабатывал пустые XML-элементы в форме правильно. (Ошибка № 67542, Ошибка # 16171518) _. Из [здесь] (https://dev.mysql.com/doc/refman/5.5/en/load-xml.html) –
radman