You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SQL将70万条CSV商品数据导入WooCommerce?

直接导入CSV到WooCommerce数据库的实操方案

完全可以直接通过SQL导入CSV数据到WooCommerce核心表,这比后台CSV导入效率高得多,尤其适合70万条这种大规模数据。以下是严格对应你提供的CSV字段的实操步骤:

一、前置准备

  • 必须先备份数据库,大规模数据操作一旦出错,备份是唯一的补救方式
  • 把CSV转成UTF-8编码,清理数据:确保价格列是纯数字(去掉$、逗号等符号),SKU无重复,制造商名称统一格式(比如避免"ABC"和"abc"并存)
  • 先拿10条测试数据跑完全流程,确认没问题再批量处理70万条

二、导入wp_posts表

每条商品对应wp_posts的一条记录,核心字段对应关系:

  • post_title = CSV里的Part Name
  • post_type = 'product'(固定值)
  • post_status = 'publish'(直接上架,也可设为'draft'后续批量修改)
  • post_author = 你的管理员ID(一般是1,可从wp_users表查询)
  • post_date/post_date_gmt = 当前时间(比如NOW())
  • 其他字段(post_content、post_excerpt等)可留空

用MySQL的LOAD DATA INFILE命令批量导入,示例代码(替换你的表前缀和CSV路径):

LOAD DATA INFILE '/path/to/your/products.csv'
INTO TABLE wp_posts
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(post_title, @dummy, @dummy, @dummy, @dummy)
SET post_type = 'product',
    post_status = 'publish',
    post_author = 1,
    post_date = NOW(),
    post_date_gmt = NOW(),
    comment_status = 'closed',
    ping_status = 'closed';

注:@dummy用来占位CSV里的其他列(SKU、制造商、价格),这些字段要放到wp_postmeta里,这里只处理post_title

为了后续关联数据更方便,建议先把CSV导入一个临时表:

CREATE TEMPORARY TABLE temp_products (
    sku VARCHAR(255),
    post_title VARCHAR(255),
    manufacturer VARCHAR(255),
    sale_price DECIMAL(10,2),
    regular_price DECIMAL(10,2)
);

LOAD DATA INFILE '/path/to/your/products.csv'
INTO TABLE temp_products
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

三、导入wp_postmeta表

WooCommerce用wp_postmeta存储商品的SKU、价格等元数据,需要插入以下核心字段:

  • _sku:对应CSV的Part Number
  • _regular_price:对应Regular Price
  • _sale_price:对应Sale Price
  • _price:显示价格,优先取sale_price,无则取regular_price
  • _visibility:固定为'visible'(商品可见)
  • _stock_status:固定为'instock'(默认有货,可根据需求修改)

用关联临时表的方式批量插入:

-- 插入SKU
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT p.ID, '_sku', t.sku
FROM wp_posts p
JOIN temp_products t ON p.post_title = t.post_title;

-- 插入常规价格
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT p.ID, '_regular_price', t.regular_price
FROM wp_posts p
JOIN temp_products t ON p.post_title = t.post_title;

-- 插入促销价格(仅当有值时)
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT p.ID, '_sale_price', t.sale_price
FROM wp_posts p
JOIN temp_products t ON p.post_title = t.post_title
WHERE t.sale_price IS NOT NULL AND t.sale_price > 0;

-- 插入显示价格
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT p.ID, '_price', 
       CASE WHEN t.sale_price IS NOT NULL AND t.sale_price > 0 THEN t.sale_price ELSE t.regular_price END
FROM wp_posts p
JOIN temp_products t ON p.post_title = t.post_title;

-- 插入可见性和库存状态
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT ID, '_visibility', 'visible' FROM wp_posts WHERE post_type = 'product';

INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT ID, '_stock_status', 'instock' FROM wp_posts WHERE post_type = 'product';

四、处理Manufacturer分类

如果你的Manufacturer是WooCommerce的自定义分类法(taxonomy:manufacturer),需要同步到分类表:

  1. 先插入唯一的制造商到wp_terms和wp_term_taxonomy:
-- 插入制造商到wp_terms(自动去重)
INSERT IGNORE INTO wp_terms (name, slug)
SELECT DISTINCT manufacturer, REPLACE(LOWER(manufacturer), ' ', '-')
FROM temp_products;

-- 关联到manufacturer分类法
INSERT IGNORE INTO wp_term_taxonomy (term_id, taxonomy, description, parent, count)
SELECT t.term_id, 'manufacturer', '', 0, 0
FROM wp_terms t
JOIN temp_products tp ON t.name = tp.manufacturer;
  1. 关联商品和制造商分类:
INSERT INTO wp_term_relationships (object_id, term_taxonomy_id)
SELECT p.ID, tt.term_taxonomy_id
FROM wp_posts p
JOIN temp_products tp ON p.post_title = tp.post_title
JOIN wp_terms t ON t.name = tp.manufacturer
JOIN wp_term_taxonomy tt ON tt.term_id = t.term_id AND tt.taxonomy = 'manufacturer';

五、注意事项

  • 70万条数据建议分批次导入,比如每次导入1万条,避免数据库超时(可拆分CSV或修改SQL的LIMIT参数)
  • 导入前关闭WooCommerce的缓存、自动更新插件,减少数据库负载
  • 导入完成后,重建WooCommerce产品索引:可以用WP CLI命令wp wc product resync --all,或者后台进入「WooCommerce > 状态 > 工具」点击「重建产品查找表」

内容的提问来源于stack exchange,提问作者GuestofHonor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 20:42:20