$valuesA[] = addValueQuotes($key)/*"'{$value}'"*/;
$valuesA[] = addValueQuotes($value)/*"'{$value}'"*/;
.ON DUPLICATE KEY UPDATE
, я бы сделал так:ON DUPLICATE KEY UPDATE
к тому, что генерируется. На сколько я помню, MySQL так умеет. $sql = mysqli_query($mysqli, $qwery);
) на корректность генерируемого SQL. <?php
$batchSize = 10;
$counter = 0;
$valuesBatch = array();
function addColumnQuotes($col) {
return surroundQuotes($col, '`');
}
function addValueQuotes($val) {
if (is_numeric($val) || is_bool($val))
{
return $val;
}
else if (is_null($val))
{
return 'NULL';
}
return surroundQuotes(addslashes($val), "'");
}
function surroundQuotes($that, $with){
return "{$with}{$that}{$with}";
}
foreach ($leiLEIRecordobj as $leiLEIRecords)
{
foreach ($leiLEIobj as $leiLEIs)
{} //просто для примера что циклов много
foreach ($leiLEIobj as $leiLEIs)
{}//просто для примера что циклов много
foreach ($leiLEIobj as $leiLEIs)
{}//просто для примера что циклов много
//И вот тут вставляю Ваш код в главном форейч
$fieldsA = array();
$valuesA = array();
foreach ($arResult[$LEI] as $key => $value)
{
if ($key == "lei:LegalAddress" || $key == "lei:HeadquartersAddress" || $key == "lei:OtherAddresses")
{
foreach ($value as $address => $valueAd)
{
$fieldsA[] = addColumnQuotes($address)/* "`{$address}`" */;
$valuesA[] = addValueQuotes($valueAd)/*"'{$valueAd}'"*/;
}
}
else
{
$fieldsA[] = addColumnQuotes($key)/*"`{$key}`"*/;
$valuesA[] = addValueQuotes($key)/*"'{$value}'"*/;
}
}
$fields = implode(',', $fieldsA);
//var_dump($fields);
$values = implode(',', $valuesA);
$counter ++;
$valuesBatch[] = "($values)";
var_dump($valuesBatch);
if ($counter == $batchSize)
{
$qwery = strtr(
"INSERT INTO `leis` ($fields) VALUES :text;\r\n",//Было "INSERT INTO `leis`($fields) VALUES ($values), :text",
// зачем тут (выше) еще раз VALUES ($values)?
array(':text' => implode(",\r\n\t", $valuesBatch))
);
$sql = mysqli_query($mysqli, $qwery);
//Выведим конструкцию для визуальной проверки
echo (strtr('<pre>:text</pre>', [
':text' => print_r($qwery, TRUE),
]));
// Выполнить запрос или записать его в общую переменную-накопитель
$counter = 0; //<-это я так понимаю обнуление счётчика после 10 записей.
$valuesBatch = array();
}
}
set_time_limit(0);
,INSERT INTO `leis` ($fields)
SELECT $fields FROM leis_temp
LEFT JOIN leis l on [... условия соответствия]
WHERE t.[СТОЛБЕЦ ID] is null
INSERT IGNORE очень сильно помог, спасибо
Каким образом можно получить 50 000 записей из бд ?
А настолько адекватно оставлять Backend на C# в 2018 году? =)
меня интересует, что произошло, что при входе выдаёт ошибку 500
{{ form_start(form) }}
{# render the task's only field: description #}
{{ form_row(form.description) }}
<h3>Tags</h3>
<ul class="tags">
{# iterate over each existing tag and render its only field: name #}
{% for tag in form.tags %}
<li>{{ form_row(tag.name) }}</li>
{% endfor %}
</ul>
{{ form_end(form) }}
Вполне возможно, что эта возможность есть.
Тогда (около 6 лет назад), когда разбирались, нормальный вариант, как в том же mssql server, не нашли.
Ну, стоит отметить огромный вклад разработчиков и postgrespro в качество документации.