davigo Posted March 20, 2014 Share Posted March 20, 2014 Hallo, liebe Spezis. Ich versuche von extern per SQL in die Tabellen ps_category und ps_category_lang zu schreiben (bis Version 1.6). Update funktioniert immer. Beim Insert stört, dass sich die DB irgendwie/wo den jeweils höchste Wert für „id_category“ merkt und von da an selbst weiter zählt. Ich darf beim Insert die „id_category“ nicht eigenständig vergeben und in die DB schreiben (aus meiner XML-Quelle übernehmen). „id_category“ kommt vor in den Tabellen: ps_category, ps_category_group, ps_category_lang, ps_category_product, ps_category_shop, ps_group_reduction, ps_layered_category, ps_product_comment_criterion_category, ps_scene_category, ps_shop Hier scheint jedoch nirgends die höchste „id_category“ gehalten zu werden. Wahrscheinlich gibt es eine zentrale Tabelle, in der die jeweils letzten Werte gehalten werden. Ja, wo? Wozu ist das alles gut? Über eine externe Sw kann man u.U. sehr viel schneller DBs analysieren, Daten modifizieren, ... mappen ... updaten. Im konkreten Beispiel habe ich extern über 500 Warengruppen als TreeView erstellt und für PS vorbereitet... Aber nun scheitert es noch an diesem Key „id_category“. Hat jemand eine Idee, bitte? MfG Link to comment Share on other sites More sharing options...
Pronux Posted March 22, 2014 Share Posted March 22, 2014 Sehr wahrscheinlich hat das Feld id_category der Tabelle ps_category in MySQL die Option auto_increment aktiviert d.h. du müsstest es für den Import deaktivieren und danach wieder aktivieren. Einfach mal nach obigem googeln. 1 Link to comment Share on other sites More sharing options...
davigo Posted March 25, 2014 Author Share Posted March 25, 2014 Danke Pronux - für diesen entscheidenden Hinweis; ich war wohl blind. Allerdings muss man AUTO_INCREMENT nicht aus-/ein-schalten, sondern den Wert -1 vor dem „Insert“ einfach eigenverantwortlich in der Tabelle setzen; etwa so (C#): … cmdS_category_AuIcr = "ALTER TABLE " + sDB_DB_Tabellen_Praefix + "category " + "AUTO_INCREMENT = "; cmdS_category_AuIcr += Convert.ToInt32( row["id_category"].ToString()) - 1; MySqlCommand commI_category_AuIcr = new MySqlCommand(cmdS_category_AuIcr, myConnection); … Weil wir ganz sicher gehen wollen - auch bei sehr großen Datenmengen, öffnen (und) schließen wir die DB-Connection für jeden DS der Quelle. Das funktioniert ganz sicher.Die jeweils abhängigen Tabellen haben übrigens kein AUTO_INCREMENT. Jetzt übertragen wir diese Verfahrensweise auf Produkte. MfG, DAVIGO 1 Link to comment Share on other sites More sharing options...
Pronux Posted March 25, 2014 Share Posted March 25, 2014 ok, danke fürs Feedback, interessant. Link to comment Share on other sites More sharing options...
davigo Posted March 26, 2014 Author Share Posted March 26, 2014 Ich glaubte nur mit der Übertragung von Kategorien fertig zu sein… Version 1.6.0.5. Entschuldigung; die Angabe „-1“ war falsch; somit muss die betreffende Zeile lauten:cmdS_category_AuIcr += Convert.ToInt32( row["id_category"].ToString()) ; Die Übertragung meiner extern erstellten Tabellen category und category_lang in die DB funktioniert einwandfrei. Jedoch werden im BO nicht alle Kategorien (die in der DB vollständig sind) angezeigt, sondern konkret nur 21 von über 500 ; Bearbeiten funktioniert gar nicht. FO zeigt mir gar keine Kategorien. (Shop1) Alternativ hole ich mir die Kategorien aus einem frischen Testshop (Shop2), bearbeite lokal nur die Bezeichnungen/Texte, exportiere diese Kategorien in Shop1. –Alles ist dann ok, so wie es sein soll. Ich kommen deshalb zu folgenden Fragen:Braucht es / gibt es in PS-BO irgendwo ein komplettes „Reindex“? Sind eventuell weitere Tabellen zwingend beteiligt, also nicht nur category und category_lang?Alternativ könnte man ähnliche Fkt. im PS-PHP anschauen, vergleichen? Besten Dank vorab. MfG, davigo Link to comment Share on other sites More sharing options...
Pronux Posted March 26, 2014 Share Posted March 26, 2014 Ohne diese Sache in PrestaShop 1.6 genau zu studieren, kann ich dir spontan leider keine brauchbaren Antworten geben. Wir hatten vor langer Zeit aber auch schonmal ähnlich Probleme, ich glaube, es hatte etwas mit den Feldern in ps_categories zu tun (hat dort ein paar sehr spezielle welche für die Sortierung/Parent-Child-Relationship verantwortlich sind). Falls du das Problem nicht findest oder dir hier niemand konkrete Hilfe geben kann, würde ich die Kategorien halt via PrestaShop-Import-Tool anlegen. Link to comment Share on other sites More sharing options...
davigo Posted March 26, 2014 Author Share Posted March 26, 2014 (edited) CSV-Import werde ich mal versuchen. Für den Anfang nehmen wir V 1.6 nur mit Test-Daten exportieren (11 ? Kategorien, csv), erhalten dann in der Datei: "ID";"Name";"Beschreibung";"Position";"Anzeigen"; "3";"Women";"<p><strong>You will find here all woman fashion collections.</strong></p><br /><p>This category includes all the basics of your wardrobe and much more:</p><br /><p>shoes, accessories, printed t-shirts, feminine dresses, women's jeans!</p>";"1";"1"; Wo sind die anderen Datensätze? Soll das die vollständige Struktur sein, wo sind die „Eltern, die armen Kinder“ …? Beim CSV-Import ist die max. Struktur allerdings so beschrieben: IDAktiv (0/1)Name * Elternkategorie Hauptkategorie (0/1) Beschreibung Meta-Titel Meta-Schlüsselwörter Meta-Beschreibung Benutzerfreundliche URL Bild-URL ID / Name des Shops Was soll man also z.B. davon halten oder sehe ich die verschieden Möglichkeiten vielleicht nicht? –Ich stehe voll auf PS!- Aber soweit es um Daten-Import-Export geht, lohnt sich die Auseinandersetzung mit den gegebenen BO-Funktionen wohl kaum: unvollständig, verworren, fehlerhaft, oder? Ich werde die Zusammenhänge hoffentlich noch erkennen und zunächst exteren Funktionen weiter bevorzugen (müssen). Edited March 26, 2014 by davigo (see edit history) 1 Link to comment Share on other sites More sharing options...
kulli Posted March 28, 2014 Share Posted March 28, 2014 (edited) Eventuell hilft auch das Modul: Prestashop Cleaner - hier die Funktion "Einschränkung der funktionalen Integrität" gruss Edited March 28, 2014 by kulli (see edit history) 1 Link to comment Share on other sites More sharing options...
Pronux Posted March 28, 2014 Share Posted March 28, 2014 (edited) CSV-Import werde ich mal versuchen. Für den Anfang nehmen wir V 1.6 nur mit Test-Daten exportieren (11 ? Kategorien, csv), erhalten dann in der Datei: "ID";"Name";"Beschreibung";"Position";"Anzeigen"; "3";"Women";"<p><strong>You will find here all woman fashion collections.</strong></p><br /><p>This category includes all the basics of your wardrobe and much more:</p><br /><p>shoes, accessories, printed t-shirts, feminine dresses, women's jeans!</p>";"1";"1"; Wo sind die anderen Datensätze? Soll das die vollständige Struktur sein, wo sind die „Eltern, die armen Kinder“ …? Beim CSV-Import ist die max. Struktur allerdings so beschrieben: Also Export habe ich bis anhin immer direkt aus der DB gemacht, weil über die Admin (BackOffice) Funktion hatten wir immer irgendwelche Probleme. Ich weiss auch nicht warum, aber bei solchen Anwendungen sollte von mir aus gesehen doch die CSV-Struktur von Import und Export IMMER übereinstimmen. Gib uns doch mal ein Feedback, wenn du eine Lösung gefunden hast, denke das würde noch viele interessieren. Edited March 28, 2014 by Pronux (see edit history) Link to comment Share on other sites More sharing options...
davigo Posted April 1, 2014 Author Share Posted April 1, 2014 (edited) Mein Feedback (ich musste einiges ausprobieren): V. 1.6.0.5 Erfahrungen aus Tests zu Category-Import-Export CSV-Import aus BO funktioniert einwandfrei, getestet mit über 900 Kategorien, bei Schachteltiefe 8; Gesamtdauer für Export/Import jetzt ca. 5 Minuten. CSV dazu automatisch erzeugt mit eigenen Tools aus realem PS V. 1.5.Meine ermittelten Bedingungen: Die DS „Root“ und „Start“ dürfen nicht in der CSV sein. Nach Anwendung von „PrestaShop Cleaner“ sind die DS „Root“ und „Start“ ja bereits vorhanden (ID 1+2).Vorhandene Kategorien vor Import löschen? JaIDs der Importdatei beibehalten? Ja Meine CSV ist nach „parent“ sortiert und „parent“ muss existieren; ein eventueller Fehler wird nicht korrekt abgefangen! [PrestaShopException]Parent category does not existat line 379 in file classes/Category.php 373. if (!$this->id_parent) 374. return 0; 375. 376. $parent_category = new Category((int)$this->id_parent); 377. if (!Validate::isLoadedObject($parent_category)) 378. throw new PrestaShopException('Parent category does not exist'); 379. return $parent_category->level_depth + 1; 380. } 381. 382. /** 383. * Re-calculate the values of all branches of the nested tree CategoryCore->calcLevelDepth - [line 155 - classes/Category.php] CategoryCore->add - [line 1185 - controllers/admin/AdminImportController.php] AdminImportControllerCore->categoryImport - [line 3253 - controllers/admin/AdminImportController.php] AdminImportControllerCore->postProcess - [line 171 - classes/controller/Controller.php] ControllerCore->run - [line 373 - classes/Dispatcher.php] DispatcherCore->dispatch - [line 54 - admin/index.php] Der direkte SQL-Export/Import über meine Tools funktioniert noch nicht einwandfrei, obwohl category, category_lang voll übereinstimmen und der Category-Tree aus der Ziel-DB mit DAVIGO-Tools korrekt angezeigt wird. Die vorhandenen Einschränkungen werden vermutet bei der Cleaner-Meldung: DELETE FROM `ps_category_group` WHERE `id_category` NOT IN (SELECT `id_category` FROM `ps_category`) 2769 Zeile(n).Hat jemand eine Idee zur Rolle von „category_group“? Zusammenfassung: Wir haben eine akzeptable Lösung auch für große Datenmengen; der CSV-Import aus BO funktioniert.Wir windmen uns nun den Produkten. Edited April 1, 2014 by davigo (see edit history) Link to comment Share on other sites More sharing options...
Pronux Posted April 1, 2014 Share Posted April 1, 2014 Danke für dieses ausführliche Feedback! Die category_group ist einfach eine mapping-table die definiert welche Kundengruppe (ps_group) welche Kategorie sehen darf. Ich denke, per default ist einfach jede Kategorie den 3 Default-Kundengruppen zugeordnet. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now