迁移客户数据时,最常见的想法是先把邮箱、姓名导进去,地址以后再说。这样当然能建立账户,但客服很快会发现:客户归属错了网站、地址没有关联、默认收货地址丢失,甚至同一邮箱在错误作用域中发生冲突。

这类导入最好从业务规则开始,而不是从CSV开始。

第一件事:确定客户共享范围

Magento的客户账户可以按Website共享,也可以在多个Website之间全局共享。导入前先检查 Stores > Configuration > Customers > Customer Configuration > Account Sharing Options。

如果按Website共享,同一个邮箱可以在不同网站分别存在,CSV中的 _website 或网站相关字段就非常关键。如果全局共享,重复邮箱会直接冲突。不要等导入报错才临时决定规则,这会影响登录、订单归属和后续同步。

先下载当前站点的样例文件

进入 System > Data Transfer > Import。根据数据情况选择:

  • Customers Main File:只处理客户主资料。
  • Customer Addresses:只处理已有客户的地址。
  • Customers and Addresses:客户和地址一起导入,适合完整迁移。

选择实体后下载Sample File。自定义客户属性、地址属性和不同版本字段可能有差异,当前后台生成的样例最可靠。

一个客户有多个地址时,CSV不止一行

客户主行通常通过邮箱和Website识别。需要多个地址时,为同一个客户增加地址行,地址行中保留关联客户所需的邮箱与Website信息,而与客户主资料无关的字段可以留空。实际列名以样例文件为准。

常见地址字段包括:

_website,_email,firstname,lastname,street,city,region,region_id,postcode,country_id,telephone,_address_default_billing_,_address_default_shipping_

country_id 通常使用两位国家代码,例如CN、US。地区既可能使用 region 文本,也可能使用系统中的 region_id。有标准地区数据时优先使用系统可识别的值;自由文本地区要在结账、税率和运费计算中额外验证。

默认地址不要靠行顺序猜

_address_default_billing_ 为1表示默认账单地址,_address_default_shipping_ 为1表示默认收货地址。同一个客户可以让同一地址同时成为两种默认地址,也可以分别指定。

不要只把“第一行地址”当默认地址。导出、重新排序或数据清洗后,行顺序可能变化,而显式标志不会。

密码怎么处理要提前决定

从其他系统迁移时,不要把旧密码明文放进CSV。不同系统的哈希算法和参数也未必兼容。更安全的方式通常是保留可验证的兼容密码哈希,或者导入账户后引导客户重置密码。

同时不要导入不必要的敏感字段。生日、性别、税号等信息如果业务不用,就不应为了“数据完整”而保留。导入前确定用途、访问权限、保留期限和删除流程。

先做三种测试客户

  1. 只有客户主资料,没有地址。
  2. 一个地址,同时为默认账单和收货地址。
  3. 两个地址,分别指定账单和收货地址。

三个账户导入后,分别从后台和前台登录检查:Website归属、客户组、Store View、姓名、地址格式、国家地区、电话号码和默认标志。若网站开启邮件通知,也要确认导入是否会触发不希望发送的欢迎邮件或密码邮件。

导入报错时这样看

邮箱重复先检查客户共享范围和Website代码;地址关联失败先检查邮箱、Website和行结构;地区无效则对照当前国家的Region数据;自定义属性值无效,先确认属性已创建且选项存在。

导入完成后保存Import History中的原始文件和错误文件。客户数据属于敏感信息,下载文件不要长期留在个人电脑或公开共享目录,处理完应按内部规则归档或删除。

建议:正式迁移不要直接覆盖全部客户。先用脱敏样本验证,再分批导入,并在每批后核对登录、地址和下单流程。


客户数据结构比较复杂?

如果旧系统字段与Magento Website、客户组和地址模型差异较大,可以先做映射和脱敏测试。需要迁移方案或导入排错,欢迎联系我们的团队。