Import Kundendaten

Hallo,

ich habe den „Minimal Import“ aus der Doku in meinem System eingespielt und folgende Anpassungen durchgeführt:

  1. da ich kein MD5 Kennwort habe, wurde die Spalte „unhashedPassword“ eingefügt.
  2. Spalte „active“ mit „true“ (angehakt) als default Value.
  3. Encoder mit „bcrypt“ als default Value.

Interessanterweise funktioniert der Import der ersten 50 Datensätze (von ~9000), leider bricht das System dann mit der folgenden Meldung ab (incl. Log).

Ich habe mal kurz nachgesehen, kann es sein dass der Import mit Sonderzeichen (z.B. „&“ ein Problem hat?

Danke für die Hilfe,

Roman

Ups! Ein Fehler ist aufgetreten!

 

   

        Die nachfolgenden Hinweise sollten Ihnen weiterhelfen.
   

 

   

The EntityManager is closed. in vendor/doctrine/orm/lib/Doctrine/ORM/ORMException.php on line 144

 

   

Stack trace:

   

       

#0 vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(741): Doctrine\ORM\ORMException::entityManagerClosed()
 #1 vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(577): Doctrine\ORM\EntityManager-\>errorIfClosed()
 #2 engine/Shopware/Plugins/Community/Backend/SwagImportExport/Components/SwagImportExport/Logger/Logger.php(78): Doctrine\ORM\EntityManager-\>persist(Object(Shopware\CustomModels\ImportExport\Logger))
 #3 engine/Shopware/Plugins/Community/Backend/SwagImportExport/Controllers/Backend/SwagImportExport.php(782): Shopware\Components\SwagImportExport\Logger\Logger-\>write('An exception oc...', 'true')
 #4 engine/Library/Enlight/Controller/Action.php(159): Shopware\_Controllers\_Backend\_SwagImportExport-\>importAction()
 #5 engine/Library/Enlight/Controller/Dispatcher/Default.php(523): Enlight\_Controller\_Action-\>dispatch('importAction')
 #6 engine/Library/Enlight/Controller/Front.php(223): Enlight\_Controller\_Dispatcher\_Default-\>dispatch(Object(Enlight\_Controller\_Request\_RequestHttp), Object(Enlight\_Controller\_Response\_ResponseHttp))
 #7 engine/Shopware/Kernel.php(176): Enlight\_Controller\_Front-\>dispatch()
 #8 vendor/symfony/http-kernel/HttpCache/HttpCache.php(487): Shopware\Kernel-\>handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
 #9 engine/Shopware/Components/HttpCache/AppCache.php(255): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL)
 #10 vendor/symfony/http-kernel/HttpCache/HttpCache.php(258): Shopware\Components\HttpCache\AppCache-\>forward(Object(Symfony\Component\HttpFoundation\Request), true)
 #11 engine/Shopware/Components/HttpCache/AppCache.php(103): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>pass(Object(Symfony\Component\HttpFoundation\Request), true)
 #12 shopware.php(101): Shopware\Components\HttpCache\AppCache-\>handle(Object(Symfony\Component\HttpFoundation\Request))
 #13 {main}

   

 

Wie hast Du das gemacht? Wie sieht das cvs file aus für den Import?

Bekomme

Import Error Es muss ein ungehashtes Passwort für die E-Mail übergeben werden.

Wieso ein Passwort für die Email?

Die Meldung “Import Error Es muss ein ungehashtes Passwort für die E-Mail übergeben werden.” kenne ich auch…

Anscheinend muss die Spalte “Password” gesetzt werden, wenn diese leer ist, dann versucht das System ein neues Kennwort zu erstellen, dazu müssen die Spalten"unhashedPassoword" und “Encoder” beim Profil hinzugefügt werden, sonst bekommst du den Fehler…

sg Roman

 

und wenn ein Passwort vorhanden ist? Ich gehe davon aus das diese md5 verschlüsselt waren darum habe ich den Import erst mit einem Eintrag versucht bei dem ich das verschlüsselte Passwort kenne. Langsam verzweifle ich. Ich habe nun extra eine Subdomain mit eigenem User eingerichtet damit ich 2 Versionen des Shops gleichzeitig laufen lassen kann ohne dass es wieder Probleme gibt. (Cache oder was weiß ich). Soweit funktioniert das mal ganz gut. Die Anleitung habe ich nun zig mal gelesen auch wenn dabei keine konkreten Beispiele abgebildet sind.
Den Export aus der alten DB habe ich mir via SQL Aufrage gebastelt und ich muss nur noch die erste Zeile mit den Feldern für shopware ändern weil man das innerhalb des importmoduls schlecht angeben kann. Laut Anleitung muss das unhashed nur rein wenn das passwortfeld leer oder als lesbares passwort vorhanden ist. Wer aber stellt passwörter unverschlüsselt in eine DB?

Ich habe mir einfach mal das Beispiel CVS aus der Anleitung kopiert. Auch das geht nicht.

Import Error

Not valid file format

Nach ein paar Versuchen ohne Änderungen kam dann die Fehlermeldung

Import ErrorEs muss ein ungehashtes Passwort für die E-Mail übergeben werden.

Der Shop scheint auch mit dem Cache Probleme zu haben sonst würde er bei ein un dem selben Vorgang nicht unterschiedliche Fehlermeldungen ausgeben.
Das Phänomen hatte ich an anderer Stelle schon öfters. Änderungen gemacht und diese waren erst nach etlichen Minuten sichtbar.

Es könnte auch sein, dass der Import für X Datensätze funktioniert und dann mit der Fehlermeldung abbricht (war bei mir so…).

Generell (soweit ich weiß) ist es so dass entweder „password“ oder ein „unhashedPassoword“ jeweils mit dem „encoder“ übergeben werden müssen, falls kein Passwort da ist, geht es nicht… *?

 

 

Die Beispieldatei hat 2 Datensätze und sollte eigentlich richtig sein. Zumindest konnte ich mal keinen Fehler sehen.
Ich habe dazu das erweiterte Importmodul benutzt weil es im einfachen keinen Kundenimport gibt.
Die datei kann ich weder in der Version 5.1.5 noch in 5.2.8 importieren.

customernumber;email;password;encoder;billing_company;billing_department;billing_salutation;billing_firstname;billing_lastname;billing_street;billing_streetnumber;billing_zipcode;billing_city;billing_countryID;ustid;paymentID;customergroup
20001;test@example.com;a256a310bc1e5db755fd392c524028a8;md5;Muster GmbH;;mr;Max;Mustermann;Musterstr.;55;55555;Musterhausen;2;;5;EK
20003;mustermann@b2b.de;352db51c3ff06159d380d3d9935ec814;md5;B2B;Einkauf;company;Händler;Kundengruppe-Netto;Musterweg;1;55555;Musterstadt;2;;4;H

In der DB habe ich nachgesehen. Wurde nichts eingetragen.

Ups, da fehlen doch ein paar Felder. Tolle Beispieldatei. Also erzeuge ich einen Kunden, exportiere den und versuche es damit.

 

Offensichtlich versteht Shopware sein eigenes Exportformat nicht.
Kunde im Backend angelegt und exportiert.
Erster Versuch (User im Shop noch vorhanden) lief durch.
Zweiter Versuch den User vorher gelöscht und import bricht ab.

Import Error
Billing salutation must be provided for user with email: muster@muster.de.

Schau mal die Datei im Excel oder so an, eventuell ist da was nicht ganz ok…

Übrigens, vorsicht mit , und ;  bei den csv Files, es gehen anscheinend nur ; … hat mir auch einiges an Nerven gekostet…

1 „Gefällt mir“

Das waren die 2 angelegten Testkunden die ich exportiert habe. Das Feld fehlt. Denke mal das ist Zahlart.
customernumber;email;password;encoder;active;billing_company;billing_department;billing_firstname;billing_lastname;billing_street;billing_zipcode;billing_city;phone;fax;billing_countryID;billing_stateID;ustid;shipping_company;shipping_department;shipping_salutation;shipping_firstname;shipping_lastname;shipping_street;shipping_zipcode;shipping_city;shipping_countryID;paymentID;newsletter;accountmode;customergroup;language;subshopID
20007;musch@musch.de;$2y$10$uRxCiOVnRJRHasiYs3oFtemE/5IKBG89q1ds5ps6scZypCgIhwey2;bcrypt;1;;;musch;musch;mauzweg 12;12345;city;019012345;;2;;;;;ms;musch;musch;mauzweg 12;12345;city;2;5;0;0;EK;1;1
20008;mauz@mauz.de;$2y$10$wKvgRyyIV.sQ4xNuPPZ7N.D/iI1p2scQ8q0o9myK54pUadVDBflZ2;bcrypt;1;;;mauz;mauzi;muschweg 123;54321;city;019054321;;2;2;;;;mr;mauz;mauzi;muschweg 123;54321;city;2;5;0;0;EK;1;1

Das beste ist, ich habe nach den Importversuchen in der DB nachgesehen. Jetzt fehlen mir die Tabellen
s_user
s_user_adresses
s_user_adresses_attributes

Liegt es daran das ich die Kunden vor dem Import im Backend gelöscht habe? Sollte ja nicht gleich die Tabellen in der DB mitlöschen.

Also wenn die Tabellen nicht mehr da sind, sollte ja nichts mehr gehen, check mal ob du einen neuen User registrieren kannst…

Schaut nicht gerade optimal aus… Frown

1 „Gefällt mir“

Schnell die recovery/install/data/install.lock gelöscht. Install Script laufen lassen und DB wieder vollständig.
Wenn ich nun Kunden anlege und Zahlungsart einstellen will steht da nicht mehr vorkasse sondern prepayment.
Bei Installation war Deutsch angewählt. Was funktioniert überhaupt wie es sollte?

Fehler gefunden. Trotz Drop Table wird das Installscript nicht richtig ausgeführt wenn man die Tabellen nicht vorher manuel mit phpmyadmin aus der DB löscht oder gleich die ganze DB und eine neue anlegt. Noch ein Bug. Version 5.1.5 da das erweiterte In/Exportmodul mit der 5.2.8  wohl nicht läuft.

Billing salutation must be provided for user with email: muster@muster.de kommt immer noch. Finde in der DB aber kein Feld dazu oder übersehe es.
suche erbrachte auch nichts.
 

Hast du die die Seite http://community.shopware.com/Import/Export-Kunden_detail_1784.html angesehen, da gibt es den Punkt “Minimaler Import”.

Das SQL "NSERT INTO MEINEDATENBANK.`s_imp… " so anpassen, dass MEINEDATENBANK entweder entfernt wird (akuelle DB) oder den Namen deiner DB bekommt und mit PhpMyAdmin ausführen. Dann hast du in den Profilen das neue “Minimal” Profil. Da sollte dann auch das Beispiel (unter Minimaler Import) auch gehen…

in der Beschreibung ist dieses Feld Billing salutation auch aufgeführt.
In den Profilen habe ich keinen minimalen Import. Ich kann ein neues erstellen und nur die Auswahl (siehe Bild).
Wenn ich aus der Auswahl dann das Feld Billing salutation lösche kommt der Fehler trotzdem.

Ok jetzt habe ich verstanden. Habe das SQL ausgeführt. Und nun erscheint minimaler Import.
Fehler

Import Error

Billing salutation must be provided for user with email: mauz@mauz.de.

bleibt jedoch.

 

Jetzt habe ich nochmal einen Export mit dem Profil gemacht. Dann den Kunden gelöscht und anschließend importiert und siehe da, es hat funktioniert.
Super danke,danke. Nun werde ich mir das mal ansehen und schauen ob ich es aus einem alten system auch importiert bekomme.

Leider fehlt da Telefon. Kann man dieses Profil erweitern? Und müssen die Feldbezeichnungen der csv Datei exakt gleich angeordnet wenn die datenfelder darunter richtig sind?

Verstehe es nicht. Exportierte Dateien werden importiert. Sobald ich eine eigene Datei verwende die völlig gleich aufgebaut ist bekomme ich invalid format.

customernumber;email;password;encoder;billing_company;billing_department;billing_salutation;billing_firstname;billing_lastname;billing_street;billing_zipcode;billing_city;billing_countryID;ustid;paymentID;customergroup
20909;mauz@mauz.com;215be2989a0649ad3ca3c4a32513b289:c8;md5;;;mr;mauz;mauzi;mauzweg 17;12345;mauzhausen;2;;5;EK

Liegt es am md5 ?