Импортируйте и обновите или добавьте новую строку, если она не существует CSV MYSQL

У меня есть автоматизированный инвентарь, который я создаю для кого-то, и я правильно завершил обновление. Значения обновлялись успешно. Однако я заметил, что mysql, который я использовал, НЕ добавлял новые строки, которые появлялись в обновлениях. Я пытался заставить это работать самостоятельно, но мне пока не повезло. Может кто-нибудь пролить немного света на то, почему это не работает? Основная таблица — «product_list»

CREATE TEMPORARY TABLE temp_update_table (SKU VARCHAR(50), PRODUCT_NAME VARCHAR(255), QTY smallint(6), COMMENTS text);

// Create Temporary Table

LOAD DATA LOCAL INFILE '/home/useraccount/products.csv' INTO TABLE temp_update_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n' (SKU, PRODUCT_NAME, QTY);

// Insert CSV Contents into table

UPDATE product_list INNER JOIN temp_update_table on temp_update_table.SKU = product_list.SKU SET product_list.QTY = temp_update_table.QTY;

// Update Current Quantities to match new ones.

INSERT INTO product_list(SKU, PRODUCT_NAME, QTY) SELECT NEW.SKU, NEW.PRODUCT_NAME, NEW.QTY  FROM temp_update_table as NEW LEFT JOIN product_list as OLD ON OLD.SKU = NEW.SKU WHERE OLD.SKU IS NULL:"
// If there are any new rows, add them (This is the line where the problem lies?)

DROP TEMPORARY TABLE temp_update_table;
// Remove Temp Table

Если бы кто-нибудь мог пролить свет, это было бы здорово! Там нет никаких ошибок sql .. так что это я называю вещи неправильно ..

1

Решение

Мне удалось решить мою проблему, используя дубликат ключа, как после загрузки временной таблицы:

insert into product_list(SKU,PRODUCT_NAME,QTY)
select SKU, PRODUCT_NAME, QTY FROM temp_update_table
ON DUPLICATE KEY UPDATE QTY = values(QTY);

Извините за глупый вопрос!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]