Import CSV to Update rows in table

后端 未结 3 884
既然无缘
既然无缘 2020-12-05 07:40

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

\"enter

相关标签:
3条回答
  • 2020-12-05 08:05

    If product_id is the unique column of that table, you can do that using CSV:

    1. Have a CSV file of those you want to import with their unique ID. CSV file must be in same order of the table column, put all your columns and no column name

    2. Then in phpMyAdmin, go to the table of database, click import

    3. Select CSV in the drop-down of Format field

    4. Make sure "Update data when duplicate keys found on import (add ON DUPLICATE KEY UPDATE)" is checked.

    image

    0 讨论(0)
  • 2020-12-05 08:12

    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;
    
    0 讨论(0)
  • 2020-12-05 08:12

    You can import the new data into another table (table2). Then update your primary table (table1) using a update with a sub-select:

    UPDATE table1 t1 set 
      sale_price = (select meta_value from table2 t2 where t2.post_id = t1.product_id)
    WHERE
      (select count(*) from table2 t2 where t1.product_id = t2.post_id) > 0
    

    This is obviously a simplification and you will most likely need to constrain your query a little further.

    Make sure to backup your full database before attempting. I recommend you work on a non-production database until the process works flawlessly.

    0 讨论(0)
提交回复
热议问题