«LOAD DATA INFILE» создает проблему при использовании нескольких последовательно - PullRequest
0 голосов
/ 06 мая 2019

У меня довольно большой поток товаров, который я разделил на несколько CSV-файлов по 20 тыс. Строк.

feed-0.csv
feed-1.csv
etc

Я загружаю этот CSV-файл во временную таблицу и экспортирую 3 новых CSV-файла, которые я позже опишузагрузить в отдельные таблицы.

products.csv
attributes.csv
prices.csv

Выше, конечно, также есть 20 тыс. строк, как (разделенный) источник, пока все хорошо, все идет хорошо.

Другая часть скрипта загружаетсявыше 3 CSV-файлов в соответствующие таблицы, db.products, db.attributes и db.prices.Когда я выбираю 1 файл (будь то feed-0.csv или feed-9.csv, подойдет любой разделенный файл), база данных обновляется 20k строками в каждой соответствующей таблице.Там все еще нет проблем.

Теперь я создаю цикл, в котором я зацикливаюсь на разделенных CSV-файлах и добавляю по 20 000 строк в каждую таблицу в каждом цикле.

Это работает хорошо, пока я не достигну 3-го цикла,тогда я получу несовпадающие числа в базе данных.например,

db.products  - 57569 rows
db.attributes - 58661 rows
db.prices   - 52254 rows

Итак, если на предыдущем все было 40 КБ, то теперь у меня есть несовпадающие числа.Я проверил products.csv, attribute.csv и Prices.csv в каждом цикле, и у каждого из них по 20 Кб, как и должно быть.

Я пробовал использовать случайные сплит-каналы, например feed-1.csv., feed-5.csv, feed-7.csv или feed-1.csv, feed-8.csv и feed-3.csv.Таким образом, я изменил файлы, я изменил порядок, но каждый раз на 3-м и последующих циклах я получаю эту проблему.

Я тоже пытался импортировать разделенные файлы из разных каналов, но каждый раз в 3-м цикле я получаю неправильные номера.Исходные файлы должны быть хорошими.Когда я запускаю только 1 или 2 файла в любой последовательности, результатом являются товары.

Я подозреваю, что где-то наложил какие-то ограничения.Я подумал, что это может быть проблема с буфером innodb, поэтому я перезапустил сервер, но проблема остается.(Буфер innodb примерно на 25% после 3-го цикла)

Я использую MariaDB 10.1.38, PHP версии 7.3.3, размер буфера innodb 500 МБ

Любые указатели в каком направлении я должен искатьдля решения будет приветствоваться!

...