2012-06-14 2 views
0

Может ли кто-нибудь указать пример хранения и чтения XML-данных в MySQL? Я использую php, и я прочитал эту документацию: http://dev.mysql.com/doc/refman/5.6/en/xml-functions.htmlПример использования XML-функций в MySQL. PHP

Но я просто не могу получить результаты, которые я хочу.

спасибо. (Я использую это, потому что у меня есть много обращений к данным, хранящимся в XML, и мне нужно быстрее функции.)

[EDIT] По запросу:

настоящее время у меня 30k .xml файлы размером от 25-50 элементов в каждом файле. Я запрашиваю значения в разных файлах сотни раз в секунду. Я нахожу, что существует огромное препятствие от действий ввода-вывода, предварительно сформированных здесь.

Я думаю, что хранение данных из XML-файлов в базу данных позволит получить значения намного быстрее.

Я прошу помощи/совета относительно того, как это сделать.

+0

Просто мои 2 цента здесь, но если вам имеют очень уникальную потребность, вы не должны хранить XML-документы в базе данных. Надеюсь, ваш план состоит в том, чтобы портить входящие документы в реляционную структуру и затем генерировать XML на лету из БД, когда у вас есть исходящий запрос. –

+0

Проблема с этим: Я много раз вызываю данные в XML-файлах. Запросы ввода-вывода являются своевременными. Поэтому я должен хранить XML-файлы в базе данных. У меня есть 30k .xml файлов с любыми элементами из 25-50 элементов. Я думаю, что писать много операторов sql - это неправильный способ отправки XML-данных в базу данных. Моим единственным решением было хранить сериализованные xml-файлы в блобе, десериализовать, парсер DOM. Но это тоже дорого. – Adola

+0

Возможно, вы захотите [обновить свой вопрос] (http://stackoverflow.com/posts/11033605/edit) с более конкретными данными о том, что вы пытаетесь сделать и где вы застряли. Просить людей предоставить общий учебник выходит за рамки. – Gordon

ответ

0

Доступ к данным, хранящимся в базе данных, будет не быстрее, чем доступ к ним на диске. Скорость базы данных обеспечивается путем индексирования данных, а содержимое XML (я предполагаю) не индексируется.

Так что, если вы не можете взять ключевые поля из XML, это не поможет вам.

Однако, в ответ на ваш фактический вопрос (а не является ли это хорошая идея), если вы используете Mysqli соединение и подготовленное заявление:

if ($stmt = $mysqli->prepare("INSERT INTO MY_DATA_TABLE (Id, Data) VALUES(?,?)")) 
{ 
    $stmt->bind_param('ib', $id, $data); 
    for($i = 0; $i < $numfiles; $i++) 
    { 
     $id= $row; 
     $data= readfile($id); 
     $stmt->execute(); 
    } 
} 

Что-то подобное? (Не пробовал).

EDIT:

Но из вашего ответа, если вы просто хотите, чтобы прочитать элементы из файлов XML, вы, вероятно, нужно посмотреть на простой XML: http://php.net/manual/en/book.simplexml.php

+0

Я ищу mysqli, потому что я понятия не имею, что это такое или что делает этот код. Я думаю, что я просто ищу ленивый способ извлечь все элементы из XML-файла и сохранить их в базе данных. – Adola

+0

ОК, ваш вопрос, казалось, сказал, что вы хотите хранить XML-файлы в базе данных (что я сказал, что это не отличная идея в первой части вопроса). Если вы хотите хранить элементы XML-файлов в базе данных, это другой вопрос и, вероятно, зависит от типа данных в вашем XML-файле. Этот код читает загрузку файлов и сохраняет их содержимое в блоке в базе данных – Woody

+0

О, да, я не думаю, что это то, что я ищу. Хотя этот mysqli, кажется, указывает больше на то, что я хочу. И извините за неправильное направление. Мне бы хотелось спросить, как я могу хранить эльмы XML-файла в базе данных. И что касается данных в моем XML-файле, я не совсем уверен, как ответить на это. Ints, varchars? Я не совсем понимаю этот вопрос. Спасибо. – Adola

Смежные вопросы