Kundenimport aus CSV

@nico84 schrieb:

Vielleicht sollte sich das mal jemand von Shopware ansehen.

und wie bekommt man jemanden dazu sich das anzuschauen?

ok, hab einen Durchbruch erzielt und konnte neue Daten importieren. Anleitung folgt sowie ich Zeit habe. jetzt muss ich mich erstmal um meinen Import kümmern :wink:

Super, ich hänge noch immer. Bin gespannt auf die Anleitung. Vielen Dank schon mal :9

@belindak schrieb:

ok, hab einen Durchbruch erzielt und konnte neue Daten importieren. Anleitung folgt sowie ich Zeit habe. jetzt muss ich mich erstmal um meinen Import kümmern :wink:

 

Kannst du schon ein paar Infos geben wie es funktioniert?

Ich erstelle eine Export-Datei genau nach Mindest- Vorgaben (siehe Nico) und erhalte immer folgende Fehlermeldung

0: Argument 1 passed to Shopware\Core\Content\ImportExport\Aggregate\ImportExportLog\ImportExportLogEntity::setProfileName() must be of the type string, null given, called in /var/www/shopware/vendor/shopware/core/Content/ImportExport/Service/ImportExportService.php on line 245

Kann damit jemand etwas anfangen?

so, sorry, hat etwas gedauert. also ich habe es geschafft 1500 Kundendaten zu importieren *tschakka*

Folgende Schritte:

  1. einen Testkunden als Vorlage in Shopware  anlegen /übers Backend
  2. Ein Profil anlegen, Bilder mit den erforderlichen Daten hänge ich an
  3. Einen Export des Testkunden / oder aller bsiherigen Kunden machen.
    JETZT GANZ WICHTIG:
  4. in Excel ein neues Blatt / Mappe öffnen, dann Datei/Import und die exportierte CSV Datei importieren (nicht die Datei einfach nur öffnen, der Import ist wichtig!)
    hier angeben UFT8, trennzeichen Semikolon etc. Ich habe auch alle Spalten markiert und als Text einfügen lassen, damit Excel ncith irgendwas damliches aus den Zahlen macht und Datum oder telefonnummern anders formatiert.
  5. in diese jetzt vorhandenen Spalten fürgt ihr eure Kundendaten hinzu. Wichtig sind z.B. die gannzen UUIDs aus eurer Datenbank zu nehmen, also die für Anrede, Zahlungsart, Ländercodes etc, die müsst ihr euch vorher aus der Datenbank rausholen.
  6. Datei speichern und Import mit dem gleichen Profil machen.

Als Info: Ich habe es lediglich mit Rechnungsadressen gemacht. Dann ist Rechnungsadresse gleich Lieferadresse. Leider legt der Shop jedesmal wenn man einen Kunden wieder importiert mit einer anderen Adresse die direkt als zusätzliche Lieferadresse an. Dann könnte man abweichende Lieferadressen noch hinterher importieren. Passwörter habe ich nicht mit importiert. Ist sicher auch möglich, aber so können die Kunden ja ein neues Passwort anfordern, die anderen Daten sind ja da.
Auf jeden fall kann man darauf aufbauen wenn man es überhaupt schafft schonmal was zu importieren. Am besten an eienr Testinstallation testen…

Wer nicht weiß wie man die Kundendaten aufbereitet in Excel um das dann gescheit zu importieren kann mir schreiben, ich kann mir das gerne ansehen und euch ein faires Angebot machen.

1 Like

ach so, ID einfach leerlassen, das wird generiert, ebenso adressid und shippingid
wichtig sind das eben alle anderen Daten gefüllt werden, mit den IDs aus der Datenbank (Also für Country, Anrede,Group,PaymentMethod etc)

You, sir, are my hero!

Hat gut funktioniert, nur das Billingaddress.countryID hast Du vergessen oder ich habs übersehen ist auch Pflicht

 

Moin, kann mir jemand sagen unter welchem Eintrag die “ID” in der Datenbank zu finden ist? Alle anderen habe ich gefunden, es scheitert nun leider nur noch an der einen :confused:

hat sich bereits geklärt - nun geht es. Vielen Dank für die Anleitung :slight_smile:

Nur der Vollständigkeit halber: Passwörter können mit importiert werden und funktionieren auch

ja, ich habe nur die Pflichteinträge angegeben damit es überhaupt funktioniert. alles andere kann natürlich hinzugefügt werden.
Freue mich wenn meine Stundenlange tüftelei doch noch einigen geholfen hat

2 Likes

Noch einen Tipp, der mich gestern Stunden gekostet hat: Ich hatte folgenden Fehler:
CONTENT__IMPORT_FILE_HAS_UNEXPECTED_TYPE: Given file does not match MIME-Type for selected profile. Given: application/vnd.ms-excel. Expected: text/csv

Ich hatte die CSV-Datei als UTF-8 CSV aus Excel heraus gespeichert. Der unglaubliche witzige Grund für diesen Fehler ist:

Excel speichert die CSV als .CSV (mit Großbuchstaben). Dieses Dateiformat ist auf meinem PC von Excel registriert und wird damit wohl als MIME-Type an den Browser weitergegeben.

Ich musste nur die Datei in .csv umbenennen (kleingeschrieben), dann klappt es sofort.

Hoffe ich kann damit jemandem Zeit sparen.

Sonst ist der Import relativ einfach, die Reihenfolge der Spalten spielt z.B. keine Rolle, solange sie den richtigen Header haben.

Und noch ein zweiter Tipp … für das Mapping von Ländern, Bundesländern, Ansprache etc. braucht ihr die IDs (UUID) aus der Datenbank des Shops. Man kann natürlich entsprechende Kunden anlegen und exportieren, um die IDs zu bekommen.

Man kann aber auch in phpmyadmin die entsprechenden Datenbanktabellen suchen z.B. salutation oder country und dann die Daten daraus exportieren.

Um z.B. die IDs der Bundesländer (gibt es für UK, US und DE) zu bekommen, nutzt ihr folgendes Script in phpmyadmin:

SELECT lower(hex(id)) ID, short_code FROM country_state WHERE 1

Jetzt müsst die diese Daten nur noch exportieren z.B. als CSV und ein Mapping in Excel dazu bauen z.B. über einen SVERWEIS.

Für die Bundesländer habe ich das z.B. so gemacht:

  • Liste der Kunden mit Postleitzahl
  • SVERWEIS-Mapping von Postleitzahl zu Bundesland (dazu gibt es Excel-Zuordnungen, wenn ihr in Google sucht)
  • SVERWEIS-Mapping von Bundesland zu Short-Code
  • SVERWEIS-Mapping von Short-Code zu ID

Liste dann aufbereiten und als CSV UTF8 exportieren (ACHTUNG .csv eventuell klein schreiben).

Das ging ziemlich gut.

Habe jetzt alles importiert. Noch ein letzter Tipp:
Man kann auch die Custom-Felder importieren, dazu muss man sie ins JSON-Format bringen und in einer Spalte CustomFields im Excel übergeben. Alle Custom-Felder müssen dazu in eine einzelne Zelle als JSON.

Das geht mit etwas Magic sogar in Excel:

Hier das Beispiel, das mein JSON aus den Tabellenzellen zusammenbaut. Dort seht ihr den technischen Namen des Custom-Felds und als Wert eine Zelle in meiner Excel.

="{"„custom_kundenfelder_erweitert_department“":"""&M2&""","„custom_kundenfelder_erweitert_website“":"&""""&AI2&""""&","„custom_kundenfelder_erweitert_Phone“":"&""""&O2&""""&","„custom_kundenfelder_erweitert_mobile“":"&""""&P2&""""&","„custom_kundenfelder_erweitert_jobtitle“":"&""""&N2&""""&"}"

Der Trick sind dabei die mehrfachen Anführungszeichen. Wenn ihr in einem String-Block also „…“ Anführungszeichen wollt, müsst ihr einfach doppelte Anführungszeichen im Block einfügen „“

Hi,

ich versuche den Import mit der Mindestanzahl an Felder, die vorgegeben sind, zu machen. Ich lasse die Felder „defaultShippingAddressId“ und „defaultBillingAddressId“ leer, damit sie neu generiert werden.
Es kommt aber die Fehlermeldung, dass sie nicht leer sein dürfen.

Was mache ich falsch?

Hallo,

ich versuche, Kunden neu anzulegen. Ich lege einige Kunden an, exportiere sie, und versuche sie wieder zu importieren

Ich habe es tagelang versucht - aber je nachdem bekomme ich Fehlermeldungen:

  1. [/0/defaultBillingAddress/countryId] Dieser Wert sollte nicht leer sein.
  2. [/0/defaultBillingAddress/salutationId] Dieser Wert sollte nicht leer sein.
  3. [/0/defaultBillingAddress/firstName] Dieser Wert sollte nicht leer sein.
  4. [/0/defaultBillingAddress/lastName] Dieser Wert sollte nicht leer sein.

oder es wird erfolgreich importiert - aber mit 0 Einträgen.
countryId: Es sind Kunden für DE, für AT etc. angelegt
salutationId: Die Anrede ist vorhanden
defaultBillingAddress/firstName
defaultBillingAddress/last

Es ist sowohl bei vorhandenen Testkunden so, als auch, wenn ich neue Kunden anzulegen versuche.

@Moritz_Naczenski: Bitte - kannst Du mir helfen?
Das Profil, mit dem ich exportiere, aber auch wieder importiere, ist in den Bildern:

Bildschirmfoto von 2021-04-21 17-20-46
Bildschirmfoto von 2021-04-21 17-22-56


Hallo, nach ewigen Versuchen mit „Invalid argument supplied for foreach()“ Fehlern ist es uns mit diesem Mapping gelungen:

„defaultBillingAddress.countryID“ für „Land der Rechnungsadresse“ = entsprechende UUID
„defaultBillingAddress.salutationID“ für „Anrede der Rechnungsadresse“ = entsprechende UUID

Offenbar ist die Anrede Pflicht bei der Adresse und muss daher sowohl „salutationId“ (Kunde) als auch „defaultBillingAddress.salutationID“ zugewiesen werden; zumindest wenn das Feld „Anrede der Rechnungsadresse“ in der CSV vorkommt

Hallo @steffen.methling , ich habe ein ähnliches Problem.

Ich möchte PDFs zum Download in den Zusatzfeldern anbieten, aufgrund der Anführungszeichen im href geht das nicht ohne Weiteres.

Stand jetzt:

„{“„custom_field_tab_1"“:"„Hier findest Du das < a href=„url.pdf“>PDF< /a > zum Download.
“"}"

auch:

„{“„custom_field_tab_1"“:"„Hier findest Du das < a href= \ „url.pdf \ „>PDF< /a > zum Download.
““}“

Beide funktionieren nicht, kannst Du evtl helfen / siehst Du den Fehler?

Ich hatte auch probiert das " mit char(34) zu ersetzen, was zwar im Import akzeptiert wird, aber dann „char(34)“ nicht zurück umwandelt im Backend.