Проблемы с MySQL LOAD XML INFILE

У меня есть документ XML в формате ...



    
        
        
        1
        
        
    

... и хочу использовать MySQL 's ЗАГРУЗИТЬ XML LOCAL INFILE, чтобы вставить его в таблицу со столбцами; (разные, id, сообщение). Я могу'Кажется, что данные из неразобранных тегов CDATA не попадают в столбцы базы данных. Это то, что данные между тегами CDATA полностью игнорируются, или есть что-то, что япропустили? Я ожидал, что CDATA просто избежит недопустимых символов XML и вставит его как обычный текст.

Благодарю.

Ответы на вопрос(1)

Решение Вопроса

LOAD XML INFILE сохраняя содержимое CDATA. Тем не менее, следующее работает и использует старый добрыйLOAD DATA INFILE вместе сExtractValue() чтобы сделать то же самое:

Если у нас есть ваш файл примера и эта таблица:

CREATE TABLE `yahootable` (
  `id` int(11) NOT NULL PRIMARY KEY,
  `various` text,
  `message` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8
;

затем выполнение этого оператора импортирует содержимое файла в таблицу:

LOAD DATA INFILE 
    '/tmp/yahootable.xml'
INTO TABLE 
    yahootable
CHARACTER SET 'utf8'
LINES STARTING BY '<row>' TERMINATED BY '</row>'
(@tmp)
SET
  id      = ExtractValue(@tmp, '//id'),
  various = ExtractValue(@tmp, '//various'),
  message = ExtractValue(@tmp, '//message')
;

Это работает, сообщая LOAD DATA INFILE, что каждый... логичнолиния', который он хранит в локальной переменной@tmp, Затем мы передаем этоEXTRACTVALUE функционировать как фрагмент XML и выбрать из него значения, которые мы хотим, используя соответствующие выражения XPath.

 meOn23 окт. 2015 г., 09:05
Благодаря тебе @Duncan, работал гладко. единственное изменение, которое я сделал, чтобы приспособить путь к файлу из локальной системы, заменить 'ЗАГРУЗИТЬ ДАННЫЕ INFILE ' кLOAD DATA LOCAL INFILE ':)

Ваш ответ на вопрос