导入CSV以更新表中的行 [英] Import CSV to Update rows in table

查看:106
本文介绍了导入CSV以更新表中的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有大约26K个产品(帖子),每个产品都有这样的元值:





post_id列是db中的产品ID,_sku(meta_key)每个产品。



我收到一个新的CSV文件,更新每个产品的_sale_price(meta_key)的所有值(meta_value)。 CSV文件如下所示:

SKU,销售价格



如何导入此CSV以仅更新基于post_id的_sale_price行id)& _sku value?



输出示例:





我知道如何通过循环遍历CSV并选择&执行每个单一产品的更新,但这似乎是低效的。



最好使用phpMyAdmin和使用LOAD DATA INFILE。

解决方案

您可以使用临时表来保存更新数据,然后运行单一更新语句。



CREATE TEMPORARY TABLE temp_update_table(meta_key,meta_value)

LOAD DATA INFILE'your_csv_pathname'
INTO TABLE temp_update_table FIELDS TERMINATED BY' ;'(meta_key,meta_value);

UPDATEtable
INNER JOIN temp_update_table.meta_key =table.meta_key
的temp_update_table SETtable.meta_value = temp_update_table.meta_value;

DROP TEMPORARY TABLE temp_update_table;


There are approximately 26K products (posts) and each product has meta values like this:

The post_id column is the product id in db and the _sku (meta_key) is the unique id for each product.

I've received a new CSV file that updates all of the values (meta_value) for _sale_price (meta_key) of each product. The CSV file looks like:
SKU, Sale Price

How do I import this CSV to update only the _sale_price row based on the post_id (product id) & _sku value?

Output Example:

I know how to do this in PHP by looping through the CSV and selecting & executing an update for each single product but this seems inefficient.

Preferably with phpMyAdmin and by using LOAD DATA INFILE.

解决方案

You can use temporary table to hold the update data and then run single update statement.

CREATE TEMPORARY TABLE temp_update_table (meta_key, meta_value)

LOAD DATA INFILE 'your_csv_pathname' 
INTO TABLE temp_update_table FIELDS TERMINATED BY ';' (meta_key, meta_value); 

UPDATE "table"
INNER JOIN temp_update_table on temp_update_table.meta_key = "table".meta_key
SET "table".meta_value = temp_update_table.meta_value;

DROP TEMPORARY TABLE temp_update_table;

这篇关于导入CSV以更新表中的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆