Вопрос

У меня более 300 000 пользователей в старом интернет -магазине. Клиент переключился на решение Magento и теперь должен мигрировать всех пользователей, адресам на Magento. Поэтому я должен написать пользовательский сценарий для импорта пользователей и их адреса в систему Magento.

Есть ли какие -либо учебники или аналогичные работы уже выполнены. Помогите мне, пожалуйста.

Спасибо

Это было полезно?

Решение

Вот пример того, как я мигрировал пользователей из OSC в Magento с библиотекой SOAP. Этот скрипт был запущен на старом сервере и должен быть запущен из командной строки SSH (время выполнения PHP через браузер не будет поддерживать это

    $proxy = new SoapClient('http://[your magento url]/api/soap/?wsdl=1');
    $sessionId = $proxy->login('admin', '[your password]');

    // connect to local db

    $link = mysql_connect('localhost', '[old ecommerce db]', '[old db pw]');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db('sbc_osc', $link);

    $sql = "SELECT * FROM customers";

    $customers = mysql_query($sql);

    // loop thyrough customers
    while ($customer = mysql_fetch_assoc($customers)) {

        set_time_limit(600);

        $newCustomer = array(
            'firstname'  => $customer['customers_firstname'],
            'lastname'   => $customer['customers_lastname'],
            'email'      => $customer['customers_email_address'],
            'password_hash' => $customer['customers_password'],
            'store_id'   => 2, // set the store you want to send to
            'website_id' => 2
        );

        $telephone = $customer['customers_telephone'];
        $fax = $customer['customers_fax'];

        try{
            $newCustomerId = $proxy->call($sessionId, 'customer.create', array($newCustomer));
        }
        catch (Exception $e) {
            echo "failed to create customer for: " . $customer['customers_firstname'] . " " . $customer['customers_lastname'] . "\n";
        }

        // grab the default address
        $sql = "SELECT ab.*, c.countries_iso_code_2, z.zone_name, z.zone_id
                FROM address_book ab 
                LEFT JOIN countries c ON ab.entry_country_id =  c.countries_id
                LEFT JOIN zones z ON ab.entry_zone_id = z.zone_id
                WHERE customers_id = {$customer['customers_id']} AND address_book_id = {$customer['customers_default_address_id']}";

        $addresses = mysql_query($sql);

        while ($address = mysql_fetch_assoc($addresses)) {

            $newCustomerAddress = array(
                'firstname'  => $address['entry_firstname'],
                'lastname'   => $address['entry_lastname'],
                'company'    => $address['entry_company'],
                'country_id' => $address['countries_iso_code_2'],
                'region_id'  => $address['zone_id'],
                'region'     => ($address['zone_name'] != "" ? $address['zone_name'] : $address['entry_state']),
                'city'       => $address['entry_city'],
                'street'     => array($address['entry_street_address']),
                'telephone'  => $telephone,
                'fax'        => $fax,
                'postcode'   => $address['entry_postcode'],
                'is_default_billing'  => true,
                'is_default_shipping' => true,
            );

            try{
                $newAddressId = $proxy->call($sessionId, 'customer_address.create', array($newCustomerId, $newCustomerAddress));
            }
            catch (Exception $e) {
                echo "failed to add address for: " . $address['entry_firstname'] . " " . $address['entry_lastname'] . "\n";
            }
        }

        echo "migrated: " . $customer['customers_firstname'] . " " . $customer['customers_lastname'] . "\n";

    }


    mysql_close($link);

Одна вещь, которую вам нужно следить за паролями. Для этого мне пришлось настроить Magento, чтобы использовать ту же схему хэширования паролей.

Другие советы

Мое предложение было бы рассмотреть API импорта клиента и создать сценарий, используя методы из базы кода, использование API будет медленнее, так как вы будете запускать сценарий на своем сервере, вы можете создать его, используя фактические методы. Таким образом, вы можете посмотреть на эту папку для классов и методов API клиента

/app/code/core/mage/customer/model/customer

а затем здесь для классов и методов адреса API

/app/code/core/mage/customer/model/address/

Вам, вероятно, нужно будет экспортировать ваши данные в CSV и получить их в правильном формате, чтобы импортировать в Magento. 30K - это не так уж и много, поэтому вы даже можете попробовать обычный процесс импорта, который является Magento по умолчанию. Нам не повезло с этим, но мы импортировали сотни тысяч клиентов. Даже тогда мы разбиваем файл на небольшие куски клиентов за раз.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top