MasterSnapshot Export & Snapshot Transform – Klarer Datentransfer aus Pimcore
MasterSnapshot Export & Snapshot Transform – Clean data pipelines from Pimcore
Der MasterSnapshot erfasst veröffentlichte Objekte vollständig als JSON. Snapshot Transform wandelt sie regelbasiert in CSV – perfekt für Shop, ERP und Marktplätze.
Warum Snapshots?
Ein eingefrorener Datenstand pro Lauf – ideal für Tests, Audits und inkrementelle Vergleiche.
Zuerst vollständige JSONs, danach Transformationen je Kanal. Saubere, flexible ETL-Kette.
Nur published Objekte. Kein Risiko, Drafts zu exportieren. Performance-optimiert pro Klasse.
1) MasterSnapshot Export (CLI)
1) MasterSnapshot export (CLI)
Der Befehl erzeugt pro Klasse eine vollständige JSON-Datei (nur published
) plus Manifest. Ziel: var/export/snapshot/<timestamp>/
.
# Beispiel (Windows)
php bin/console snapshot:master-export Produkt,Kategorie,Anwendung ^
--out-dir var/export/snapshot --lang de
# Example (Linux/Mac)
php bin/console snapshot:master-export Produkt,Kategorie,Anwendung \
--out-dir var/export/snapshot --lang de
Ausgabe je Klasse: Produkt.json
, Kategorie.json
, … sowie manifest.json
(Meta, Zähler, Dauer).
- Unterstützt: Assets (ID/Pfad/Filename), Feld- & Klassifizierungs-Strukturen, M2M/AM2M inkl. Metadaten, Blöcke, Fieldcollections (lokalisiert).
2) Snapshot Transform → CSV
2) Snapshot transform → CSV
Das Transform-Command liest den Snapshot-Ordner und wendet ein Profil mit Regeln an (Felder, Pfade, Lookups, Join, Lokalisierung).
# Windows
php bin/console transformer:run produkt.csv.profile ^
var/export/snapshot/2025-08-12_1100 ^
C:\temp\produkt.csv ^
--delimiter=tab --list-sep="|" --encoding="utf8-bom" --quote=none
# Linux/Mac
php bin/console transformer:run produkt.csv.profile \
var/export/snapshot/2025-08-12_1100 \
/tmp/produkt.csv \
--delimiter=tab --list-sep="|" --encoding="utf8-bom" --quote=none
--delimiter=tab
setzt Tab als Trenner, --quote=none
schaltet doppelte Anführungszeichen ab (praktisch bei TSV).
Regelprofil – Felder & Pfade
Rule profile – fields & paths
Ein Profil definiert Spalten. Jede Spalte hat eine path
(JSON-Pfad im Snapshot), optional join
für Listen und unique
.
{
"class": "Produkt",
"lang": "de",
"columns": {
"ID": { "path": "id" },
"Key": { "path": "key" },
"Bezeichnung": { "path": "loc:Bezeichnung" },
"Anwendungen": { "path": "Anwendungen[].key", "join": "|", "unique": true },
"Kategorien": { "path": "Kategorien[].key", "join": "|", "unique": true },
"Bilder": { "path": "Bilder[].Bild[].path", "join": "|" }
},
"lookups": {
"Anwendungen": { "file": "anwendung.json" },
"Kategorien": { "file": "kategorie.json" }
}
}
loc:…
holt lokalisierte Werte.[].key
extrahiert aus Relationen die Keys (Liste).- Lookups schlagen IDs gegen separate Klassen-JSONs nach.
CSV-Optionen
--delimiter
: comma, semicolon, tab, oder ein Zeichen (z. B.;
).--list-sep
: Trenner für Mehrfachwerte (Default|
).--encoding
: utf8, utf8-bom, iso-8859-1.--quote
: auto, double, none (für TSV oftnone
).--enclosure
/--escape
: Feintuning für Spezialfälle.
Tipp: Unter Windows Pfade in Anführungszeichen setzen. Für Tab als Trenner --delimiter=tab
verwenden.
Was steckt im Snapshot?
What’s inside the snapshot?
- Alle Felder inkl. Localizedfields (sprachenbewusst über
loc:
abrufbar). - Relationen (M2M/AM2M) – IDs, Keys, Pfade, optional Metadaten.
- Fieldcollections & Blöcke – als Arrays, sauber serialisiert.
- Assets – ID, Pfad, Dateiname.
Best Practices
- Nur benötigte Klassen exportieren – schneller & schlanker.
- Lookups nutzen, statt harte Mappings im Code.
- Einheitliche
list-sep
(z. B.|
) pro Kanal. - Für Excel-Importe oft utf8-bom wählen.
Wie filtere ich nur veröffentlichte Objekte?
How to export only published objects?
Ist fest im Snapshot-Export verankert (o_published = 1
). Drafts werden nie exportiert.
Wie referenziere ich lokalisierte Felder?
How do I reference localized fields?
Mit Präfix loc:
, z. B. loc:Bezeichnung
. Sprache per --lang
(Export) bzw. im Profil definieren.
TSV ohne Quotes?
--delimiter=tab
und --quote=none
verwenden.
Windows-Pfade
Backslashes escapen oder Pfade in Anführungszeichen setzen: "C:\temp\out.csv"
.