PROBLEM: CSV Import mit Konvertierung

Hallo,

wir benötigen die Möglichkeit CSV-Dateien zu importiern und am besten als cron-job.

Export mit Konvertierung wie „{if $priceGroupActive == 0}deaktiviert{else}aktiviert{/if}“ „{if $priceGroupId == 3}DD17{/if}“ … funktionieren ohne Probleme, leider hab ich Probleme mit dem Import.

Ich möchte eine CSV importieren und dabei ein Wert ändern. z.B.:

 

{if $priceGroupActive == deaktiviert}0{else}1{/if}

{if $priceGroupId == DD17}3{/if}

 

Nun habe ich schon mehrere Varianten ausprobiert, leider wird der Wert/Änderung in Shopware 5 nicht übernommen.

 

Könnte mir einer genau sagen, wie der Befehl richtig lauten müsste? (Dann könnte ich selber weiter machen)

Über eine Antwort würde ich mich sehr freuen

 

Hast du mal einen Screenshot von deiner Konvertierung?
Sieht so erstmal in Ordnung aus.

Klar :wink:

und hier die CSV

 

Ich habe es gerade mal mit folgenden Konvertierungen probiert:

{if $supplierName == ‘LEKI’}Test{else}Test2{/if}

{if $categoryId == “Test”}38{/if}

Das hat beides funktioniert. Kann da so keinen fehler erkennen.

ich werde das gleich mal probieren.

muss ich bei zwei zeilen, die Zeilen mit “;” abschließen?

 

pricegroupID is ein Feld für aktiviert und deaktiviert gib es deshalb evtl probleme?

Ich gehe davon aus, dass 0 = deaktiviert ist und 1 = aktiviert

wäre es möglich damit du mal meine Variante testen könntest?

Ich befürchte der Fehler entsteht, weil verschiedene Typen verwendet werden (nummerich, boolean).

Es kommt auch darauf an, wie die CSV einglesen wird, sprich wird die CSV erst eingefügt und danach die Werte geändert oder wird erst eingelesen - Wert geändert - in die Tabelle geschrieben.

 

 

also auch ein einfacher Weg funktioniert nicht bei der “Preisgruppe aktiv” 

{if $priceGroupActive == ‘1’}0{/if}

wenn ich keine Import Umwandlung eintrage funktioniert es, sobald ich versuche einen wert zu ändern passiert nichts… ;/

Auch dein Beispiel funktioniert bei mir:

{if $priceGroupId == „Test“}1{/if}

{if $priceGroupActive == „aktiviert“}1{/if}

Setzt du auch die aktuellste Version 2.0.1 ein?

Hallo die gleiche Idee ist mir auch gekommen. Ich habe das Update angeschoben und hab einen Fehler bekommen.

Also das Plugin sauber deinstalliert und wollte es wieder neu installieren.

Jetzt bekomme ich einen Error:

Error

Unable to install, got exception: An exception occurred while executing ’ INSERT IGNORE INTO s_import_export_profile (type, name, tree, hidden, is_default) VALUES (?, ?, ?, ?, ?)’ with params [„categories“, „default_categories_minimal“, „{"id":"root","name":"Root","type":"node","children":[{"id":"537359399c80a","name":"Header","index":"0","type":"node","children":[{"id":"537385ed7c799","name":"HeaderChild","index":"0","type":"node","shopwareField":""}]},{"id":"537359399c8b7","name":"categories","index":"1","type":"node","children":[{"id":"537359399c90d","name":"category","index":"0","type":"iteration","adapter":"default","attributes":"","children":[{"id":"53e9f539a997d","type":"leaf","index":"0","name":"categoryId","shopwareField":"categoryId"},{"id":"53e0a853f1b98","type":"leaf","index":"1","name":"parentID","shopwareField":"parentId"},{"id":"57ff840eab2d9","type":"leaf","index":"2","name":"name","shopwareField":"name","defaultValue":""}]}]}]}“, 0, 1]: SQLSTATE[42S22]: Column not found: 1054 Unknown column ‚is_default‘ in ‚field list‘

nun bin ich leicht überfordert.
Plugin über Backend gelöscht habe ich auch. Danach erneuter Download mit installation. Leider wieder diese Fehlermeldung 

Versuch mal folgendes über die Datenbank auszuführen:

ALTER TABLE `s_import_export_profile` ADD is_default tinyint(1) NOT NULL

Das legt die fehlende Spalte an. Danach ein Re-Install ausführen im Backend.

super die installation hat funktioniert.

 

wenn ich das Plugin aufrufe bekomme ich noch diese meldung

 

Ups! Ein Fehler ist aufgetreten! Die nachfolgenden Hinweise sollten Ihnen weiterhelfen. An exception occurred while executing ‚SELECT s0_.id AS id_0, s0_.type AS type_1, s0_.name AS name_2, s0_.tree AS tree_3, s0_.is_default AS is_default_4, s0_.base_profile AS base_profile_5 FROM s_import_export_profile s0_ WHERE s0_.hidden = ? LIMIT 200 OFFSET 0‘ with params [0]: SQLSTATE[42S22]: Column not found: 1054 Unknown column ‚s0_.base_profile‘ in ‚field list‘ in vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php on line 119 Stack trace: #0 vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(836): Doctrine\DBAL\DBALException::driverExceptionDuringQuery(Object(Doctrine\DBAL\Driver\PDOMySql\Driver), Object(PDOException), ‚SELECT s0_.id A…‘, Array) #1 vendor/doctrine/orm/lib/Doctrine/ORM/Query/Exec/SingleSelectExecutor.php(50): Doctrine\DBAL\Connection->executeQuery(‚SELECT s0_.id A…‘, Array, Array, NULL) #2 vendor/doctrine/orm/lib/Doctrine/ORM/Query.php(321): Doctrine\ORM\Query\Exec\SingleSelectExecutor->execute(Object(Doctrine\DBAL\Connection), Array, Array) #3 vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php(969): Doctrine\ORM\Query->_doExecute() #4 vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php(924): Doctrine\ORM\AbstractQuery->executeIgnoreQueryCache(NULL, 2) #5 vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php(739): Doctrine\ORM\AbstractQuery->execute(NULL, 2) #6 engine/Shopware/Plugins/Community/Backend/SwagImportExport/Controllers/Backend/SwagImportExportProfile.php(90): Doctrine\ORM\AbstractQuery->getArrayResult() #7 engine/Library/Enlight/Controller/Action.php(159): Shopware_Controllers_Backend_SwagImportExportProfile->getProfilesAction() #8 engine/Library/Enlight/Controller/Dispatcher/Default.php(523): Enlight_Controller_Action->dispatch(‚getProfilesActi…‘) #9 engine/Library/Enlight/Controller/Front.php(226): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp)) #10 engine/Shopware/Kernel.php(176): Enlight_Controller_Front->dispatch() #11 vendor/symfony/http-kernel/HttpCache/HttpCache.php(487): Shopware\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #12 engine/Shopware/Components/HttpCache/AppCache.php(255): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL) #13 vendor/symfony/http-kernel/HttpCache/HttpCache.php(258): Shopware\Components\HttpCache\AppCache->forward(Object(Symfony\Component\HttpFoundation\Request), true) #14 engine/Shopware/Components/HttpCache/AppCache.php(103): Symfony\Component\HttpKernel\HttpCache\HttpCache->pass(Object(Symfony\Component\HttpFoundation\Request), true) #15 shopware.php(101): Shopware\Components\HttpCache\AppCache->handle(Object(Symfony\Component\HttpFoundation\Request)) #16 {main}  

OK

Hey Denny,

bei dir scheint irgendwas bei der Installation schief gelaufen zu sein. Auch hier Fehlt wieder eine Spalte :/ 

ALTER TABLE `s_import_export_profile` ADD base_profile tinyint(1) NOT NULL

Danach wieder ein Re-install ausführen. 
Ich hoffe das ist die letzte Spalte :wink:

Grüße,
Simon

ok läuft wieder… jetzt bin ich ja gespannt ob der import klappt :wink:

so ich habe es noch einmal getestet mit deinem Befehl für den Import und bekomme folgende Meldung
 

priceGroupActive Feld muss int sein!

Interessant, schaue ich mir gleich mal an, so wie ich das lese kam der Fehler so vorher nicht oder?

UPDATE:

so langsam fängt das Plugin an zu funktionieren.

{if $priceGroupActive == 1}0{else}1{/if}  --> er tauscht jetzt 1 und 0 so so wie ich es möcht. - trage ich in der CSV nun aktiviert ein bekomme ich den Fehler beim IMPORT mit dem “INT” - Wert.

Wie sieht das eigentlich bei mehreren IF Anweisungen aus? - kommt am ende eines Befehls ein “;” oder braucht man das bei der smarty nicht? - warum es bei dir ohne “INT” fehler funktioniert verstehe ich trotzdem nicht :wink: - aber es wird so langsam ;P 

 

UPDATE 2:
{if $priceGroupID == DD17}3{/if}

{if $priceGroupID == AA36}4{/if}

funktionieren nun auch. - es werden auch keine “” oder ’ ’ benötigt.  Das Feld “priceGroupID” hat auch einen anderen TYP als boolen.

Natürlich könnte ich einfach mit 1 und 0 Arbeiten, aber die Frauenwelt im Vertrieb etc verstehen aktiviert und deaktiviert eher ;P 

@Simon Bäumer schrieb:

Hey Denny,

bei dir scheint irgendwas bei der Installation schief gelaufen zu sein. Auch hier Fehlt wieder eine Spalte :/ 

ALTER TABLE s_import_export_profile ADD base_profile tinyint(1) NOT NULL

Danach wieder ein Re-install ausführen. 
Ich hoffe das ist die letzte Spalte ;)

Grüße,
Simon

Bei mir sind auch diese beiden Fehler aufgetreten und das obwohl ich nur auf Updaten geklickt habe, ich habe keine Manuelle Installation vorgenommen.

Wenn ich nun etwas importieren will, erhalte ich die Fehlermeldung: The EntityManager is closed. 

Klappen denn die Standardprofile?

Die Profile die ich nutze sind immer kopien vom Komplettimport, bei denen ich die nicht benötigten Werte herausgelöscht habe.