2013-08-20 65 views
0

我正在使用LOAD DATA LOCAL INFILE將數據加載到臨時表mid.then我使用更新查詢來更新表產品中找到。兩個唯一匹配的字段是模型。mysql插入更新LOAD DATA LOCAL INFILE

$q = "LOAD DATA LOCAL INFILE 'Mid.csv' INTO TABLE mid 
    FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' IGNORE 1 LINES 
    (@col1,@col2,@col3,@col4,@col5,@col6) set [email protected],[email protected],[email protected] "; 
mysql_query($q, $db); 


mysql_query('UPDATE mid m, products p set p.products_price= m.price,p.products_quantity= m.stock where p.products_model= m.model'); 

它的工作原理,並更新我有產品table.the問題是,在中期桌子上有新的記錄,其作爲我使用update語句沒有得到插入。

我已經看過插入查詢和重複更新。我已經看到大量的例子,當它必須在一個表上工作,但沒有一個地方我必須匹配另一個表。

要麼我正在尋找錯誤的東西,要麼有另一種方法來做到這一點。

我將不勝感激任何幫助。

問候

NAF

回答

1

我不知道什麼樣的產品表中的其他列,但這裏的應該爲您根據您的示例3列工作有一個基本的方法,假設products_model列在產品表中是唯一的:

insert into products (products_price,products_quantity,products_model) 
select price, stock, model 
from mid 
on duplicate key update 
    products_price = values(products_price), 
    products_quantity = values(products_quantity) 
+0

我試過了上面的但它仍然沒有插入。產品表有超過14列。它有所作爲。 – naf

+0

如果要將新行插入產品表中,則需要能夠爲所有列提供適當的值。 CSV是否有你需要的數據?我知道它至少有6列基於你的代碼,所以也許如果你將整個CSV加載到一個表中,會給你你需要的數據。 –

+0

產品表有很多字段,我只希望更新products_price,products_quantity,products_model。csv也有很多字段,但我只對價格,庫存,模型感興趣。如果模型不退出,那麼我希望它插入products_price ,products_quantity,products_model在產品表中並在其他相應顏色中寫入null。 – naf