这是我自己整理的。令我惊讶的是,没有关于如何将客户从 ZenCart/OsCommerce 导入到 Magento 的任何有效文档,除非某些论坛具有高级 Magento 扩展。因此,我在这里发布我的解决方案,这对任何正在寻找相同解决方案的人都有帮助。
获取 ZenCart 客户详细信息
显然 ZenCart 使用 MySQL DB。进入 MySQL 提示并查看 customers 表。分别使用下面的命令。
use ZenCart_DB
mysql> select * from customers\G
您可以在那里查看您的 ZenCart 客户的详细信息。每个客户的示例输出都是这样的。
customers_id: 1298
customers_gender: m
customers_firstname: firstname
customers_lastname: Lastname
customers_dob:
customers_email_address: customer@email.com
customers_nick:
customers_default_address_id:
customers_telephone: 12345678
customers_fax:
customers_password: dd2df54a57a4d35ffd2985b3584f0831:2c
customers_newsletter: 0
customers_group_pricing: 0
customers_email_format: TEXT
customers_authorization: 0
customers_referral:
customers_paypal_payerid:
customers_paypal_ec: 0
COWOA_account: 0
这是一个示例,我们必须将所有这些客户详细信息保存到一个 unix 文件中。
select * from customers into outfile 'customer.txt'\G
现在退出 MySQL 提示符。要创建 Magento 用户,我们只需要 名字、姓氏、电子邮件和密码。 这四个细节是必需的。因此,从 customer.txt 文件中 grep 这些详细信息。
customer.txt 文件的位置将是 /var/lib/mysql/ZenCart_DB/customer.txt
将所需的客户详细信息添加到不同的单个文件中,这将有助于我们稍后将它们放入 for 循环中。
awk {'print $3,$4,$7,$10'} customer.txt > details.txt
awk {'print$1'} details.txt > zen_firstname
awk {'print$2'} details.txt > zen_secondname
awk {'print$3'} details.txt > zen_email
awk {'print$4'} details.txt > zen_password
创建 Magento 用户
不,我们已经收集了所有详细信息。现在要从后端创建一个测试 Magento 用户,我们必须在 magento 数据库中运行 5 个 MySQL 查询。他们是,
INSERT INTO customer_entity ( entity_id, entity_type_id, attribute_set_id, website_id, email, group_id, increment_id, store_id, created_at, updated_at, is_active, disable_auto_group_change) VALUES ( 1, 1, 0, 1, $email, 1, NULL, 4, 2014-11-24 11:50:33, 2014-11-24 12:05:53, 1, 0)
INSERT INTO customer_entity_varchar (value_id, entity_type_id, attribute_id, entity_id, value) VALUES (1, 1, 5, 1, $firstname);
INSERT INTO customer_entity_varchar (value_id, entity_type_id, attribute_id, entity_id, value) VALUES (2, 1, 7, 1, '$lastname' );
INSERT INTO customer_entity_varchar (value_id, entity_type_id, attribute_id, entity_id, value) VALUES (3, 1, 12, 1, '$password' );
INSERT INTO customer_entity_varchar (value_id, entity_type_id, attribute_id, entity_id, value) VALUES (5, 1, 3, 1, 'English' );
如果要添加的客户太多,最好将它们放入 for 循环中。这对每个人都是可选的。我们可以在 bash 中创建 for 循环,或者在 Perl 或您擅长的任何语言中创建类似的循环。
注意事项,
- entity_id 值很重要,它应该在所有 5 个查询中都相同。它确定客户的 ID 号。
- value_id 类似于表 customer_entity_varchar 中行的序列号。照原样按照顺序进行。
- attribute_id 应按 5、7、12、3 的顺序保持原样,因为它分别代表客户的名字、姓氏、密码、语言。
这就是我的想法。谢谢。 :)