Frage

Ich habe mehr als 300.000 Benutzer auf einem alten Online-Shop. Client geschaltet Magento-Lösung und jetzt haben alle die Benutzer migrieren, Adressen zu Magento. Also habe ich ein benutzerdefiniertes Skript zu importieren Benutzer und ihre Adresse an dem Magento-System zu schreiben.

Gibt es irgendwelche Tutorials oder ähnliche Art von Arbeit bereits getan. Bitte hilf mir.

Danke

War es hilfreich?

Lösung

Hier ist ein Beispiel dafür, wie ich Benutzer von OSC in Magento mit der SOAP-Bibliothek migriert. Dieses Skript wurde auf dem alten Server laufen und muss vom ssh-Kommandozeile (php Ausführungszeit über den Browser dieses

unterstützen wird nicht ausgeführt werden soll
    $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);

Eine Sache, die Sie brauchen zu achten ist die Passwörter .. für das ich arbeiten musste Magento einzurichten das gleiche Passwort-Hashing-Schema zu verwenden.

Andere Tipps

würde Mein Vorschlag in dem Kunden Import api suchen und ein Skript bauen Sie die Methoden aus der Code-Basis verwendet wird, wird die API langsamer, da, so dass Sie das Skript auf dem Server ausgeführt werden, können Sie bauen es die Verwendung von tatsächliche Methoden. So können Sie in diesem Ordner für die Kunden api Klassen und Methoden aussehen

/ app / code / core / Mage / Kunde / Modell / Kunden

und dann hier für die Adresse api Klassen und Methoden

/ app / code / core / Mage / Kunde / Modell / Adresse /

Sie würden wahrscheinlich benötigen, um Ihre Daten in CSV zu exportieren und im richtigen Format zu importieren in Magento bekommen. 30k ist nicht so viel, so können Sie auch den normalen Importprozess auszuprobieren, die Standard-Magento ist. Wir haben nicht viel Glück damit gehabt, aber wir haben Hunderttausende von Kunden importieren. Selbst dann brechen wir die Datei in kleine Stücke von Kunden auf einmal.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top