Jump to content

SQL Abfragen für Export von 1.5.6


Recommended Posts

Hallo zusammen,

 

leider verabschiedet sich die Datenbank nach einigen Upgrades nun entgültig. Zeit für einen "sauberen" Umstieg auf 1.6.

 

Für dieses Problem brauche ich allerdings die Datenbank Exports der

- Kategorien (mit Bildern)

- Produkte (mit Bildern) und

- Kunden (mit Adressen)

 

Leider hat keines der gefundenen Ergebnisse im Form zum Erfolg geführt.

 

Bestimmt ist hier jemand, der mir etwas unter die Arme greifen kann.

 

Viele Grüße

 

Stig

Link to comment
Share on other sites

Hallo zusammen,

 

kleines update:

Die Abfrage:

 
SELECT
ps_category.id_category as 'ID',
ps_category.active as 'Active',
ps_category_lang.name as 'Name',
ps_category_lang.id_lang as 'Language',
ps_category_lang.name as 'Parent category',
ps_category.is_root_category as 'Root category',
ps_category_lang.description as 'Description',
ps_category_lang.meta_title as 'Meta title',
ps_category_lang.meta_keywords as 'Meta keywords',
ps_category_lang.meta_description as 'Meta description',
ps_category_lang.link_rewrite as 'URL rewritten',
CONCAT('http://www.yoursite.com/img/c/',ps_category_lang.id_category,'.jpg') as 'Image URL'

FROM ps_category 
LEFT JOIN ps_category_lang on ps_category_lang.id_category = ps_category.id_category
WHERE ps_category_lang.id_lang is "1"

Brache bei den Kategorien jetzt ein glaubwürdigeres Ergebnis.

 

Als nächstes geht es an die Produkte

Link to comment
Share on other sites

Hallo Coyotee, :)

vielen Dank für das Teilen Deines sql-Statments. Ich bin mir während der Entwicklung meiner Statements ziemlich alleine vorgekommen. :unsure: Darum wollte ich Dir eine Rückmeldung geben. Ich habe mich bei der Entwicklung zumindest ziemlich alleine gefühlt und hätte mir feedback gewünscht. :)

 

Ich habe bei dem Statment zum Export der Kategorien hier im Thread bewußt einen /inner join/ zur Verknüpfung der Tabellen angewendet. Der Grund ist, dass ich die 1:n Beziehung im Export abbilden wollte. Daten, die nicht der 1:n Beziehung beider Tabellen folgten, wollte ich nicht in den Export nehmen. Warum hast Du einen /outer join/ zur Verküpfung gewählt?

 

Du weist das Attribut "Parent category" aus. Aber das kann doch abfragetechnisch gar nicht die Elternkategorie der Kategorie sein, weil die Verknüpfung eine ps_category_lang.id_category = ps_category.id_category ist wird dort nur der Kategoriename als Attribut ausgewiesen. Das ist der gleiche Inhalt wie das Attribut "name". Ein Import dürfte den Kategoriebaum ziemlich zerhauen. :wacko:

 

Du schränkst das Abfrageergebnis durch eine where Bedingung "where ps_category_lang.id_lang is "1"" ein. Ich vermute, weil in der Datenbank mehrere Spracheinstellungen in den Stammdaten auch mehrere gleicher Datensätze in der Tabelle ps_categorie_lang für die id_categorie angelegt haben.

 

Du exportierst in diesem Zusammenhang das Attribut ps_category_lang.id_lang as 'Language' an welcher Stelle kann man das Attribut denn importieren? Notwendig wäre es ja für einen logischen csv-Import in Prestashop, aber soweit ich weiß, gibt der csv-Import das Attribut für den Kategorieikmport nicht her. Hast Du einen Weg gefunden?

 

Viele Grüße und ein schönes neues Jahr

Link to comment
Share on other sites

Hallo Luca01,

 

Dir auch ein gutes neues Jahr.

Die SQL Abfrage musste ich so bauen, da andere Versuche bei mir zu falschen Ergebnissen geführt haben.

Sprachen sind keine mehr vorhanden, aber nur im Shop - nicht aber in der Datenbank.

Inzwischen habe ich den Verdacht, dass die Datenbank kaputt ist.

 

Ich finde es sehr schade, dass gerade bei solchen Problemen, die Cracks sehr zurückhaltend sind.

Danke für Dein Posting - man kommt sich allerdings sehr alleine vor.

 

Tatsächlich gibt ein Problem: die CSV Datei ist nicht saber getrennt.

 

Hier mein Script:

SELECT
a.id_product,
a.active,
b.id_lang,
b.name,
c.categories,
a.price,
a.id_tax_rules_group,
a.wholesale_price,
a.reference,
a.supplier_reference,
d.name,
e.name,
a.ean13,
a.upc,
a.ecotax,
a.width,
a.height,
a.depth,
a.weight,
f.quantity,
a.minimal_quantity,
a.visibility,
a.additional_shipping_cost,
a.unity,
a.unit_price_ratio,
b.description_short,
b.description,
g.tags,
b.meta_title,
b.meta_keywords,
b.meta_description,
b.link_rewrite,
b.available_now,
b.available_later,
a.available_for_order,
a.available_date,
a.date_add,
a.show_price,
h.bild,
1 as bilder_loschen,
a.online_only,
a.condition,
a.customizable,
a.uploadable_files,
a.text_fields,
a.out_of_stock,
b.id_shop

FROM ps_product as a

left outer join ps_product_lang as b on a.id_product = b.id_product
left outer join
(SELECT ps_category_product.id_product, GROUP_CONCAT(ps_category_lang.name) as categories
FROM ps_category_product
left outer join ps_category_lang on ps_category_product.id_category = ps_category_lang.id_category GROUP BY ps_category_product.id_product) as c on a.id_product = c.id_product
left outer join ps_supplier as d on a.id_supplier = d.id_supplier
left outer join ps_manufacturer as e on a.id_manufacturer = e.id_manufacturer
left outer join
(SELECT * FROM ps_stock_available where id_product_attribute = 0) as f on a.id_product = f.id_product
left outer join
(SELECT ps_product_tag.id_product, GROUP_CONCAT(ps_tag.name) as tags
FROM ps_product_tag
left outer join ps_tag on ps_product_tag.id_tag = ps_tag.id_tag GROUP BY ps_product_tag.id_product) as g on a.id_product = g.id_product
left outer join
(SELECT ps_image.id_product, GROUP_CONCAT('http://www.germangoodies4u.com/img/p/',
(CASE WHEN LENGTH(ps_image.id_image)=1 THEN substr(ps_image.id_image,1,1)
ELSE (CASE WHEN LENGTH(ps_image.id_image)=2 THEN CONCAT(substr(ps_image.id_image,1,1),'/',substr(ps_image.id_image,2,1))
ELSE (CASE WHEN LENGTH(ps_image.id_image)=3 THEN CONCAT(substr(ps_image.id_image,1,1),'/',substr(ps_image.id_image,2,1),'/',substr(ps_image.id_image,3,1))
ELSE (CASE WHEN LENGTH(ps_image.id_image)=4 THEN CONCAT(substr(ps_image.id_image,1,1),'/',substr(ps_image.id_image,2,1),'/',substr(ps_image.id_image,3,1),'/',substr(ps_image.id_image,4,1))
ELSE CONCAT(substr(ps_image.id_image,1,1),'/',substr(ps_image.id_image,2,1),'/',substr(ps_image.id_image,3,1),'/',substr(ps_image.id_image,4,1),'/',substr(ps_image.id_image,5,1))
END)
END)
END)
END),'/',ps_image.id_image, '.jpg') AS bild
FROM ps_image GROUP BY ps_image.id_product) as h
on a.id_product = h.id_product
WHERE b.id_lang = '1'
Link to comment
Share on other sites

Hallo coyotee,

ich würde jetzt erstmal bei Deinem Script zum Kategorien-Export bleiben.

 

Die SQL Abfrage musste ich so bauen, da andere Versuche bei mir zu falschen Ergebnissen geführt haben.

Der sql zum Kategorien-Export führt auch zu einem falschen Ergebnis, weil Du nicht alle notwendigen Daten einbindest.  :rolleyes:  Es mag ja ein schönes Ergebnis sein, ist aber falsch. ;)

 

Inzwischen habe ich den Verdacht, dass die Datenbank kaputt ist.

Das ist etwas zu früh geurteilt. Es kann zu Inkonsistenzen (falsche Zuordnungen in den Tabellen) kommen, aber das bedeutet nicht, das die ganze Datenbank defekt ist. Zunächst überarbeite doch den Kategorien-Export-Sql so, dass auch die Eltern-Kategorie mitgeliefert wird. Damit überhaupt eine csv-Datei mit schönem und richtigem Inhalt entsteht, die man dann auch importieren kann.

 

Hier mein Script:

.......

Das Skript dürfte Dich bekannt vorkommen ;-)

Dieses Script für den Produkt-Export, muß man verstehen. Es ist ein Grundlagenwerkzeug. Der Vorteil ist, das man es nicht selber schreiben muß. Man muß es aber schreiben können, damit man es auf die eigene Datenbank anwenden kann. ;)

 

 

Tatsächlich gibt ein Problem: die CSV Datei ist nicht saber getrennt.

Diese Fehlerbeschreibung hilft keinem, weil ich z.B. mit den von mir geposteten sql-Statments meinen Shop auch tatsächlich exportiert und importiert habe. Darum kann ein Nutzer erstmal davon ausgehen, das die Statments funktionieren und auch in ihrem Dateninhalt sauber getrennt sind. Ich poste keine Arbeiten, die nicht bei mir im praktischen Einsatz getestet sind. Zumindest könntest Du ja mit einem Beispiel schreiben, welche Attribute (Informationsinhalte eines Datensatzes) nicht sauber getrennt sind und wo Deiner Meinung nach das Statment Fehler hat und warum. Wenn es uns gemeinsam gelingt, das sql zu verbessern würde das auch die Leute weiter bringen, die noch vor einem Update dieser Art stehen.

Viele Grüße

Edited by Luca01 (see edit history)
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...