【问题标题】:ZenCart to Magento importZenCart 到 Magento 导入
【发布时间】:2015-01-22 01:47:43
【问题描述】:

我希望将 ZenCart“客户”迁移到现有的 Magento 网站。我尝试了 MagentoConnect 的两个扩展;但是它不起作用。

osCommerce Migration ToolosCommerce Import

市场上有优质的第 3 方迁移服务,但我想自己做。请通过代码提供一些步骤来帮助我。

目前 zen cart DB 具有前缀“zen_”。这会不会造成不便?请指出我的起点。谢谢

【问题讨论】:

    标签: magento import migration database-migration zen-cart


    【解决方案1】:

    这是我自己整理的。令我惊讶的是,没有关于如何将客户从 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 的顺序保持原样,因为它分别代表客户的名字、姓氏、密码、语言。

    这就是我的想法。谢谢。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      相关资源
      最近更新 更多