Skip to content

Import-Befehle (Pimcore) ​

Daten aus dem alten Pimcore-System kommen über Artisan-Befehle ins PIM, nicht über die Oberfläche. Der Datenimport im PIM ist für Excel/CSV gedacht.

Alle Befehle sind idempotent: Ein zweiter Lauf aktualisiert, statt doppelt anzulegen (Zuordnung über external_entity_map bzw. Pimcore-IDs).

Ausführen lokal mit ddev exec php artisan …, auf dem Server mit docker compose exec admin php artisan … in ~/stacks/apps.

import:pimcore: Katalog ​

bash
php artisan import:pimcore --dry-run
php artisan import:pimcore
php artisan import:pimcore --only=articles --only=products
php artisan import:pimcore --sample=10 --skip-media-references
OptionBedeutung
--only=*Nur bestimmte Phasen: manufacturers, series, models, categories, articles, spare-parts, products, vehicle-relations, roles, article-groups
--limit=Höchstzahl je Phase
--sample=Deterministische Stichprobe in Prozent (Artikel, Ersatzteile, Produkte, Gruppen)
--skip-media-referencesMedienverknüpfungen auslassen
--dry-runNur zählen

Quelle ist die Datenbankverbindung pimcore (Schema matev_pimcore_source). Reihenfolge: Hersteller → Traktor-Serien → Modelle → Kategorien (Taxonomie) → Artikel → Produkte → Produkt-Artikel-Rollen. Bestellungen, Kunden und Bricks gehören nicht dazu.

import:pimcore hat keine Optionen --export/--from; er braucht direkten Zugriff auf die Pimcore-Datenbank.

import:pimcore:dealers: Händler, Händlerbenutzer, Mitarbeiter ​

bash
php artisan import:pimcore:dealers --dry-run
php artisan import:pimcore:dealers --staff-database=<db-mit-backoffice-benutzern>

Importiert:

  • Händlerfirmen als Organisationen, Standorte dazu,
  • Händlerbenutzer (Pimcore-Rollen ADMIN/USER werden dealer_owner/dealer_staff),
  • Pimcore-Mitarbeiter mit Gruppen und Rechten (z. B. „Redakteure“ → matev_pim_editor).

Passwörter: Bestehende Konten werden nie angefasst. Nur neu angelegte Händlerbenutzer übernehmen den bcrypt-Hash aus Pimcore. Mitarbeiter bekommen ein zufälliges Passwort und eine Einladung.

import:pimcore:orders: Bestellungen und Angebote ​

bash
php artisan import:pimcore:orders --dry-run
php artisan import:pimcore:orders

Importiert Bestellungen und Angebote der Händler als schreibgeschützte Historie (Reiter „Bestellungen“/„Angebote“ beim Händler). Setzt voraus, dass import:pimcore:dealers vorher gelaufen ist.

Export und Import über eine Datei ​

Auf dem Produktionsserver ist die Pimcore-Datenbank nicht erreichbar. Dafür haben import:pimcore:dealers und import:pimcore:orders zwei Optionen:

OptionBedeutung
--export=<datei>Nur den Datensatz aus Pimcore lesen und in diese Datei schreiben. Nichts importieren. Die Datei bekommt Rechte 0600
--from=<datei>Statt aus der Datenbank aus dieser Datei importieren
--connection=Pimcore-Verbindung, Standard pimcore
--dry-runNur zählen

Ablauf:

bash
# 1. Lokal, wo Pimcore erreichbar ist. Datei AUSSERHALB des Repositorys ablegen.
ddev exec php artisan import:pimcore:dealers --export=/tmp/dealers.json
ddev exec php artisan import:pimcore:orders  --export=/tmp/orders.json

# 2. Datei sicher auf den Server bringen (scp) und in den Container geben.

# 3. Auf dem Server importieren, Reihenfolge einhalten
php artisan import:pimcore:dealers --from=/pfad/dealers.json --dry-run
php artisan import:pimcore:dealers --from=/pfad/dealers.json
php artisan import:pimcore:orders  --from=/pfad/orders.json

# 4. Dateien sofort löschen: lokal, auf dem Server, im Container
rm /pfad/dealers.json /pfad/orders.json

Datenschutz: Exportdateien

Die Exportdateien enthalten personenbezogene Daten: Namen, Adressen, E-Mail-Adressen und (bei Händlern) Passwort-Hashes.

  • Niemals committen. Es gibt keine .gitignore-Regel, die sie abfängt. Legen Sie sie außerhalb des Repositorys ab (z. B. /tmp), nie unter admin/.
  • Nach dem Import sofort löschen, überall, wo sie lagen: lokal, auf dem Server, im Container.
  • Nicht per Mail, Chat oder Ticket verschicken.

Weitere Pimcore-Befehle ​

Für die Medien gibt es eigene Befehle (import:assets, import:assets:rollback, import:assets:map-taxonomy, import:assets:verify), außerdem import:pimcore:sync-taxonomy und import:pimcore:project-designations. Hinweise dazu in Deployment (Betrieb).