2017-02-13 4 views
1

Ich habe ein automatisiertes Inventar ich für jemanden erstellen und ich hatte die Aktualisierung korrekt abgeschlossen. Die Werte wurden erfolgreich aktualisiert. Ich bemerkte jedoch, dass die mysql, die ich verwendete, keine neuen Zeilen hinzufügte, die in den Aktualisierungen erschienen. Ich habe versucht, das alleine zu machen, aber bisher hatte ich kein Glück. Kann jemand ein wenig Licht in das Thema werfen, warum das nicht funktioniert? Die Haupttabelle ist "product_list"Importieren und aktualisieren oder neue Zeile hinzufügen, wenn es nicht existiert 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 

Wenn jemand etwas Licht abwerfen könnte, wäre es großartig! Es gibt noch keine SQL-Fehler .. so its me Dinge falsch Aufruf ..

Antwort

1

ich manged mein Problem mit auf doppelten Schlüssel wie so zu lösen, nachdem die temporäre Tabelle geladen:

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

Sorry für die dumme Frage!

Verwandte Themen