Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
conspect.pdf
Скачиваний:
374
Добавлен:
17.03.2016
Размер:
27.86 Mб
Скачать

Базы данных

БГУИР, ПОИТ

 

 

6.11. Оператор LOAD XML

6.11.1.Общая структура оператора LOAD XML

Мы только что рассматривали LOAD DATA INFILE. Единственное отличие LOAD XML в том, что работает он не с текстом, а с XML, поэтому здесь нет ключевых слов для управления разделителями, но есть возможность указать идентификатор ряда.

6.11.2.LOAD XML: пример использования

Возьмём результат работы LOAD DATA INFILE и «выгрузим в XML». Это удобно сделать через консоль.

mysql -uroot -p123456 --xml –e

"SELECT * FROM `shop`.`testtable`" > testtable.xml

Результат (фрагмент):

Стр: 242/248

Базы данных

БГУИР, ПОИТ

 

 

Для чистоты эксперимента заменим тег <row> на <one_row> и проведём импорт данных.

LOAD XML INFILE 'c:/testtable.xml' IGNORE INTO TABLE `testtable` CHARACTER SET 'UTF8' ROWS IDENTIFIED BY '<one_row>'

И всё, «приехали». Без IGNORE MySQL ругается на нулевые значения полей типа bit, но даже с IGNORE не может правильно обработать ситуацию со значением NULL в текстовом поле (считает, что поля нет).

В итоге данные оказываются повреждёнными.

И что делать? Ничего.

Для «классических случаев» (когда все поля у вас строковые или численные, нет NULL и т.п. импорт из XML работает хорошо.

Про только что показанную проблему есть куча вопросов в Интернет (и ни одного вразумительного ответа). Более-менее вменяемое написано здесь: http://stackoverflow.com/questions/8920995/load-xml-with-bit-fields-in-mysql

6.11.3.LOAD XML: краткий итог

И ещё один важный момент.

Эксперименты с различными XML-файлами «разной степени покалеченности» показали, что довольно часто MySQL производит импорт, не выдаёт никаких сообщений об ошибках или предупреждений, но данные в таблице оказываются «повреждёнными» (т.е. отличаются от того, что было в файле).

Вывод? Ждём, пока этот функционал доведут до нормальной работоспособности.

Стр: 243/248

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]