mysql插入更新LOAD DATA LOCAL INFILE

时间:2013-08-20 00:12:25

标签: 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 model=@col1,price=@col3,stock=@col6 ";
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');

它工作并更新产品表。我遇到的问题是中间表中的新记录没有插入,因为我正在使用更新语句。

我已经查看了插入查询并在duplicate上进行了更新。我已经看到了大量的示例,它们必须在一个表上工作但没有必须将它与另一个表匹配。

要么我正在寻找错误的东西,要么就是另一种方法来做到这一点。

我将不胜感激。

问候

NAF

1 个答案:

答案 0 :(得分:1)

我不确定产品表中的其他列是什么,但是这里的基本方法应该基于示例中的3列,假设products_model列在products表中是唯一的:

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)