2017-02-13 58 views
1

我爲某人創建了一個自動清點,並且我的更新已正確完成。值正在更新成功。但是,我注意到我使用的是不添加新行出現在更新中。我試圖讓自己的工作,但我迄今沒有運氣。有人可以解釋爲什麼這種方法無效嗎?主表是'product_list'如果不存在,導入並更新或添加新行CSV MYSQL

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

我manged使用像這樣重複鍵解決加載臨時表後,我的問題:

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

對不起,愚蠢的問題!

相關問題