商品导入导出:CSV、批量编辑与数据校验
商品 CSV 用一张表批量创建或更新商品、变体与图片链接,批量编辑器则在后台表格里直接改已有商品的属性。两者解决的是「一次处理很多商品」;它们不负责判断数据本身对不对,也不提供撤销。官方说明 Shopify 用 CSV 文件完成这类批量任务。导入导出总览。
本库哪些内容依赖它
- 商品与变体:商品、选项、变体的概念;CSV 里的行结构以本文为准;
- SKU 术语:SKU 的编码边界;本文只写它在 CSV 与批量编辑里的位置;
- 自定义数据:metafield 的定义与读取;本文只写批量编辑与 CSV 列的入口;
- 库存与地点:多地点库存的对象关系;本文只写库存 CSV;
- 集合与发布:导入时的发布渠道选项与集合列;
- 商品捆绑与组合:官方写明捆绑不支持导入、导出与批量编辑。
本文是该平台机制的权威来源,其他文章只写各自页面语境下的用法。
核心对象与概念
| 对象 | 含义 | 备注 |
|---|---|---|
| 商品 CSV | 首行为列头、逗号分隔、UTF-8 编码的商品表 | 官方要求 LF 换行,列头大小写敏感 |
| URL handle | 每个商品的唯一标识,也用于商品页 URL | 只含字母、数字与连字符,不含空格;未填时由 Title 生成 |
| 变体行 | 同一 handle 下的后续行,只放变体数据与额外图片 | 一个商品最多 3 个选项 |
| Overwrite products with matching handles | 导入时的覆盖选项 | 按 handle 匹配已有商品 |
| 批量编辑器(bulk editor) | 后台表格,行是商品或变体,列是属性 | 可加减列,保存后统一提交 |
| 库存 CSV | 按变体与地点设置库存的独立文件 | 与商品 CSV 分开 |
商品 CSV:导入
官方的导入步骤:在 Products 点 Import 选文件,配置选项(可取消 Publish new products to all sales channels 而只发布到在线商店,以及覆盖选项),点 Upload and continue,核对后确认 Import products;文件上传后会向操作者账号邮箱发确认邮件。文件不得超过 15 MB,上传失败或超时时官方建议拆分文件。导入商品。
列的规则见列说明页。以下只写规则,不复制整份列表:
- 必填:新建商品只要求 Title;带变体或更新已有商品时,URL handle 与 Title 都要提供。
- 列头:列说明页列出的名称含 Title、URL handle、Description、Vendor、Product category、Type、Tags、Published on online store、Status、SKU、Barcodes、Option1 name、Option1 value、Price、Compare-at price、Inventory tracker、Inventory quantity、Weight value (grams)、Product image URL、Image position、SEO title 等。官方称旧模板的列名仍向后兼容,排错页里也还能看到 Variant Inventory Tracker 一类旧式写法。
- Collection 列:官方称这是唯一可以额外加进 CSV 而不破坏格式的列,其他列不能新增。
- Published on online store:true 为默认,商品在在线商店可见并可售;false 则不可见。Status 取值 active(默认)、draft、archived。
- Inventory quantity:官方写明只适用于单地点店铺,多地点用库存 CSV。
- 图片:需公开可访问的 HTTPS 地址,每个商品最多 250 张,一行一张;文件名不得带
_thumb、_small、_medium后缀;指向 Files 区的链接会被重新下载并产生重复图片。 - 不能删除:CSV 不能批量删除商品。
变体与选项在 CSV 里怎样表达
有变体的商品占多行:第一行放商品信息与首张图,后续行只放 URL handle、该变体的数据与额外图片链接,Title、Description、Vendor、Tags 在变体行留空。
三条易出事故的规则,逐条见列说明页:
- 更新 SKU、Weight value (grams) 这类依赖变体的列时,必须同时带上 Option1 name 与 Option1 value;官方称缺少依赖列会导致导入报错,或使已有数据被删除。
- 不带 Option1 name 与 Option1 value 时,会创建一个新的默认变体并删除现有变体。
- 改动 Option1 value、Option2 value、Option3 value 会删除现有变体 ID 并创建新 ID,可能破坏依赖变体 ID 的第三方集成。
SKU 与 handle 的分工:handle 决定「导入时匹配到哪个商品」,SKU 是变体层的属性,不参与商品匹配。SKU 的命名边界见术语,商品与变体的关系见商品与变体。
商品 CSV:导出
在 Products 点 Export。选择范围有四种:Current page、All products、Selected products、Products matching search and filters;格式两种:适用于 Excel、Numbers 等表格程序的 CSV,或纯 CSV。官方写明:导出文件含商品、变体与 URL;SEO Title 与 SEO Description 只在手动自定义过时才有值;商品图片不包含在 CSV 内;第三方履约的变体在 Fulfillment service 列显示为 manual。所有商品的变体数均少于 100 时直接下载,否则或导出全部商品时通过邮件发送。导出商品。
批量编辑器与 metafield 批量
从 Products、Collections、Inventory 或 Customers 勾选条目后点 Bulk edit,用 Columns 增减要显示的属性,改完点 Save,有错误则修正后再保存。官方说明同时改的信息越多耗时越长,条目上限未写明;页面也没有撤销说明。多变体商品的库存只能从 Inventory 区批量改。Bulk editing。
metafield 可在批量编辑器里对商品、变体、集合与客户批量编辑:勾选商品后 Edit products > Columns,在 Metafields 分区选列后直接改值。变体 metafield 要用变体批量编辑器再加 metafield 列。官方提醒用 Microsoft Edge 时可能因 URL 过长出错。批量编辑 metafield。metafield 的定义与类型见自定义数据。CSV 列头里的 metafield 形如 Fabric (product.metafields.shopify.fabric),列说明页同时写明变体 metafield 需用批量编辑器(摘要读取)。
库存批量编辑设置的是绝对数量,官方称它不产生库存移动的审计记录;若打开编辑器后库存已变,保存时会出现库存不匹配对话框,可选保存建议值、保存原值或放弃更改。库存批量编辑。
库存 CSV 与多地点
在 Products > Inventory 导出或导入。多地点规则:每个变体要为每个需要更新的地点各写一行,地点名区分大小写且须与后台完全一致;对导出时未激活的地点导入库存不会激活它。文件同样不得超过 15 MB。核心列是 On hand (current)(导出时的数量)与 On hand (new)(要设置的新数量)。选择 All states 格式时,Shopify 会把当前库存与 On hand (current) 比对,导出后库存有变的行不会导入并发邮件说明;官方也写明可清空 On hand (current) 列以跳过这层校验。库存 CSV。对象关系见库存与地点。
限制、数值与易错点
核验于 2026-09-29,来源标在句末。
- 文件大小:商品 CSV 与库存 CSV 各不得超过 15 MB。(导入页、库存 CSV 页)
- 不能取消、无历史:官方写明 CSV 商品导入开始后不能取消,也不能查看过往导入的历史;可在店铺 activity log 查看最近的改动;导入前应备份商品数据。(导入页)
- 回滚:**未见官方回滚机制。**已读页面没有撤销已完成导入的说明,批量编辑页与商品详情页同样没有。因此「导入前先导出一份」是官方要求的备份动作,恢复只能靠重新导入备份文件,且受上面变体 ID 规则影响,本文未实测恢复的完整程度。
- 表格软件:官方警告,经 Excel 或 Numbers 排序后的 CSV 可能使商品与图片链接错位并丢失图片;Excel 会产生弯引号导致「Missing or stray quote」一类错误,需改成直引号。(导入页、常见问题页)
- 常见错误(常见问题页所列,措辞原样):
Ignored line #-## because handle ... already exists;Ignored line #-## because it did not contain product data;Illegal quoting on line;Fulfillment service can't be blank(填服务名或manual);Inventory policy is not included in the list(取deny或continue);Validation failed: options are not unique;Validation failed: price can't be blank;The uploaded image exceeds the 20 megapixel limit(最大 5000x5000 像素);Value must be a valid product reference(先导入被引用的商品)。 - 每日变体上限:常见问题页写有错误
Daily variant creation limit reached, try again,并称有 500,000 个及以上变体的店铺,24 小时内通过 CSV 最多创建 10,000 个新变体(摘要读取,使用前重读该页)。 - 未写明:商品 CSV 的行数上限、批量编辑器的条目上限、单商品变体数上限,本次读到的导入导出页均未给出,不得据此断言「无上限」。
验证一次
- 导出一次 All products 作为备份,记录商品数、变体数与导出时间;
- 用测试店铺或少量商品,修改一个价格与一个 Tags 值,取消覆盖选项与勾选覆盖各导一次,对照后台看差异;
- 故意省略 Option1 name 与 Option1 value,仅在测试商品上观察变体是否被重置,并记录变体 ID 是否变化;
- 用 Excel 打开再保存一次,检查图片列、引号与编码有没有被改动;
- 多地点店铺导出库存 CSV,改一个地点的 On hand (new),导入并检查 activity log 与库存历史;
- 在批量编辑器改一个 metafield 列,保存后到商品页或 Liquid 输出确认值。
待继续完善
- 商品 CSV 与批量编辑器的行数、条目数与单商品变体数上限;
- 覆盖选项对 metafield、集合、市场价格列的完整行为;
- 导入失败后的部分成功状态与 activity log 的具体呈现;
- 各错误提示在真实店铺的复现与截图,本文没有实测。