Лучше всего делать пакетную вставку или же конвертировать xml в соответствующий sql (с теми же пакетными вставками) и выполнить его через
mysql -u username -p password database_name < /path/to/your/file.sql
Обратите внимание, на
-p password
, между ними, если мне не изменяет память, нет пробела.
Для варианта с SQL формируйте вот такое:
INSERT INTO tbl_name
(a,b,c)
VALUES
(1,2,3),
(4,5,6),
(7,8,9);
Только не три строки, а по 100-500 - думаю подберете соотношение.
Примерный код формирования, основанный на вашем примере:
<?php
$batchSize = 1000;
$counter = 0;
$valuesBatch = array();
foreach ($leiLEIobj as $leiLEIs)
{
foreach ($leiLEIobj as $leiLEIs)
{
$LEI = $leiLEIs->nodeValue;
$arResult[$LEI][$leiLEIs->nodeName] = $LEI;
//$LEIs[$row->nodeName] = $row->nodeValue;
}
$valuesBatch[] = "($values)";
$counter ++;
if ($counter==$batchSize)
{
$qwery = strtr(
"INSERT INTO `leis`($fields) VALUES ($values) :text",
array(
':text' => implode(",\r\n", $valuesBatch)
)
);
// Выполнить запрос или записать его в общую переменную-накопитель
$counter = 0;
$valuesBatch = array();
}
}
P.S. csv так же можно сформировать нужным образом из XML, дополнив значениями по умолчанию те, которых в xml-строке нет, а дальше что-то подобное вот этому:
LOAD DATA LOCAL INFILE 'abc.csv' INTO TABLE abc
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(col1, col2, col3, col4, col5...);