Синтаксис оператора LOAD XML
Оператор LOAD XML считывает данные в таблицу из XML-файла;
file_name – имя файла в виде строки.
В дополнительном операторе ROWS IDENTIFIED BY tagname должен быть записан в виде литеральной строки и окружен угловыми скобками ( ).
Для записи данных из таблицы в XML-файл можно использовать следующую команду:
Для считывания файла назад в таблицу нужно использовать оператор LOAD XML INFILE.
Элемент – эквивалент строки таблицы БД.
Данный оператор поддерживает 3 разных формата XML:
-
Имена столбцов задаются через атрибуты и соответствующие им значения столбцов:
-
Имена столбцов задаются в виде тегов и значений столбцов как наполнения этих тегов:
-
Имена столбцов name в атрибуте :
Данный формат используется другими инструментами MySQL (например, mysqldump).
Все форматы можно использовать в одном и том же XML-файле.
Пункт IGNORE number ROWS или IGNORE number LINES пропускает первый number строки в XML-файле.
Рассмотрим использование данного оператора на примере.
Предположим, что таблица создана следующим образом:
Предположим, что данная таблица пуста.
Далее предположим, что существует простой XML-файл person.xml, который содержит следующие данные:
Для импорта данных в person.xml в таблицу person можно воспользоваться следующим оператором:
Считается, что person.xml находится в каталоге данных MySQL.
В ситуации, когда файл не может быть найден, появится следующее сообщение об ошибке:
Пункт ROWS IDENTIFIED BY '' ставит в соответствие каждый элемент в XML-файле строке таблицы, в которую импортируются данные. В данном примере это таблица person в базе данных test.
В результате будут импортированы 6 строк в таблицу test.person. Проверить результат можно с помощью простого оператора SELECT:
Данный пример показывает, как говорилось выше, что любые из трех разрешенных форматов XML могут находиться в одном и том же файле и считываться в операторе LOAD XML.
Для выполнения обратных действий, т.е. вывода табличных данных MySQL в XML-файл, можно, используя mysql клиент, выполнить следующие команды:
Опция --xml позволяет mysql клиенту использовать для вывода форматирование XML;
Опция –e заставляет клиент сразу после опции выполнить SQL-оператор.
С помощью пункта ROWS IDENTIFIED BY '' можно импортировать данные из одного XML-файла в таблицу базы данных с разными определениями.
Предположим, что существует файл address.xml, содержащий следующий XML:
Можно снова воспользоваться таблицей test.person, очистить все существующие записи и показать ее структуру:
Далее создадим таблицу address в базе данных test при использовании оператора CREATE TABLE:
Для импорта данных из XML-файла в таблицу person выполним следующий оператор LOAD XML, определяющий строки в виде элементов :
Проверить импорта записей выполняется с помощью оператора SELECT:
У элементов в XML-файле, начиная с , нет никаких соответствующих столбцов в таблице person , поэтому их пропускают.
Для импорта данных из элементов в таблицу address используем оператор LOAD XML, как показано на рисунке:
С помощью оператора SELECT можно проверить, были ли данные импортированы.
Данные из элемента не импортируется. Однако, столбец person_id в таблице address, значение атрибута person_id от родительского элемента для каждого импортируется в таблицу address.