У меня есть сценарий, который я использую для переноса данных с одного db на другой. Я уже сделал это с использованием обычных скриптов вставки и обновления mysql. Это просто слишком долго.Как использовать LOAD DATA LOCAL INFILE REPLACE
В любом случае я сбросил все данные, которые я хочу обновить в новом db, на csv, я просто обеспокоен тем, что, если я запустил этот скрипт, я собираюсь получить повторяющиеся записи. Я не имею «id», который соответствует, поэтому я не могу выполнить сравнение по сценарию REPLACE, указанному ниже. Мне было интересно, может ли кто-нибудь дать мне понять, правильно ли этот сценарий выглядит.
В настоящее время у меня есть строки данных в новом db, я просто хочу переписать все поля в новом db с этими новыми данными в csv, если они совпадают. Поле «archived_id_number» является единственным полем, на котором я мог бы совпадать, но это не первичный ключ.
Может кто-то стрелять мне следующее:
Я хочу заменить какие-либо данные в полях с данными в CSV-если archived_id_number на CSV соответствует тому, что находится в новом дб. Если совпадения нет, я хочу вставить данные в новую строку.
$sql = '
LOAD DATA LOCAL INFILE "'.$theFile.'"
REPLACE INTO TABLE Product
FIELDS TERMINATED BY "|"
LINES TERMINATED BY "\\n"
(archived_id_number, sku, name, upc, account_id, shippingBox_id, unit_cost, supplier_id, description, productLength, productWidth, productHeight)
;';
Благодарим за помощь!
Хотя это не первичный ключ, я предполагаю, что есть '' UNIQUE' на archived_id_number'? – Wrikken
Да, это правильно, и есть уникальный на sku – LargeTuna
Тогда он должен работать, насколько я могу видеть, без оригинальной сборки таблицы и фрагмента csv. Сначала я запустил его на тестовой копии таблицы, но ... – Wrikken