По рабочим причинам мне приходится работать с командой второй силы. Я сказал просто экспортировать файл SQL непосредственно мне, и они настояли на экспорте XML-файла. Или, может быть, у них есть свои причины, но я все равно хочу, чтобы они заставили команду, ленивую, понять, от чего они страдают.
Я думаю, что MySQL должен поддерживать импорт XML. Я забыл, каковы были результаты поиска. В любом случае, я, наконец, решил написать свой собственный PHP для создания инструкции SQL.
Структура данных XML примерно такова:
Документы очень большие. Есть много. <объект>
То есть записей много, но данные в одной записи не очень велики.
Существует множество классов и функций для работы с XML в PHP. См.: http://|/php .net/руководство/ж/ссылки. xml .php Среди них наиболее часто используемым должен быть XmlReader 、
SimpleXML (Чисто личное чувство, без поддержки данных)
XmlReader Он читается одно предложение за другим в виде потока файлов. Он в основном используется для обработки больших XML-файлов, но его трудно использовать.
Симплексml Он намного проще в использовании, но не может обрабатывать большие объемы XML-данных.
Сначала я только пользовался им. XmlReader
Для импорта, конечно, тоже можно импортировать, но вложено несколько слоев цикла и суждения. Если бы я не импортировал пакет данных позже, я бы подумал, что мог бы написать так.
Когда я импортировал во второй раз, я использовал комбинированный метод. XmlReader
и SimpleXML
, Потому что независимо от размера вашего XML-файла, куда могут попасть данные одной записи? (Я говорю об общей ситуации)
Когда я думаю об этом методе, код настолько лаконичен, что мне неловко его отправлять. Но для того, чтобы читатели этой статьи имели более интуитивное представление о простоте, позвольте мне иметь наглость приукрасить ее.
open(__DIR__ . '/company.xml'); while($xml->read()) { If ($xml - > name ='object'and $xml - > nodeType == XMLReader:: ELEMENT) {// Enter object) $inXml = $xml - > readOuterXML (); // Gets the current entire object content (string) $inXml = simplexml_load_string ($inXml); // Converts to a SimpleXMLElement object // Then without it, you can see how to save it to the database dump for $inXml. var_dump($inXml); } // Continue reading until you enter the next object }
Вот и все, если ты все еще этим занимаешься. XmlReader
Это слишком сложно использовать. SimpleXML
Если вы не можете получить большие файлы, и вы изо всех сил пытаетесь найти “большие файлы для операций PHP XML”, идея этой статьи должна быть тем, что вам нужно.