2011-01-19 4 views
4

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

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

Благодаря

ответ

3

Вот пример того, как я перенаправил пользователей из 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 на использование той же схемы хэширования пароля.

+0

Than ks Крис. Я работаю над этим скриптом. Я сделаю и отправлю ответ. – Elamurugan

+0

Также здесь мы никогда не проверяем существование уже существующей электронной почты или нет? Возможно ли подключение через API-интерфейс mage? – Elamurugan

+0

@ Ela, я считаю, что вы должны сначала проверить наличие клиентов. Вам просто нужно сделать еще один вызов API. http://www.magentocommerce.com/wiki/doc/webservices-api/api/customer#customer.list Использовать электронную почту ini the filter – Chris

1

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

/приложение/код/​​ядро ​​/ Mage/Клиент/Модель/Клиент

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

/app/code/core/Mage/Customer/Model/Address/

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

+0

Да, я думаю, что я должен написать собственный скрипт, поскольку записи не являются 30 000, его 300 000. И фактически в новом магазине у них уже есть более 14 000 записей. Также необходимо проверить наличие пользователей и проверить адрес в отношении их db-интерфейса API, а затем сохранить их. Таким образом, единственный способ - написать собственный код. Спасибо, и у вас есть больше учебника или что-то для этого – Elamurugan

Смежные вопросы