2012-04-09 2 views
1

Ich habe ein Feld beim Importieren, das große Daten enthalten kann, scheint es, dass CSV hat inoffizielle Begrenzung von etwa 65000 (wahrscheinlich 65535 *) Zeichen. als sowohl libreoffice calc und magento die Daten für dieses bestimmte Feld abschneiden. Ich habe es gut untersucht und ich bin mir sicher, dass es nicht wegen eines speziellen Charakters oder Zitaten ist. Die Daten sind ziemlich direkt, die Zeilen sind im Format ähnlich zueinander.Wie maximale Größe von CSV-Feld in Magento zu erhöhen, wo ist das

Frage: Wie man diese Größe erhöht? oder zumindest wo ich suchen sollte, um es zu finden?

Anmerkung: Ich in Libreoffice Writer gezählt und es war etwa 65040. aber wahrscheinlich mit Carriage Return Zeichen könnte es 65535

Antwort

1

Sie haben Recht, es gibt eine Einschränkung in Magento, weil es Textfelder als TEXT in der MySQL-Datenbank einstellt und diese Art von Feldern laut MySQL-Dokumenten maximal 65535 Zeichen unterstützt.

http://dev.mysql.com/doc/refman/5.0/es/storage-requirements.html

So könnte man den Spaltentyp in Ihrer Magento Datenbank ändern MEDIUMTEXT- zu verwenden. Ich denke, der richtige Ort befindet sich in der Tabelle catalog_product_entity_text, in der Sie den Feldtyp 'value' entsprechend Ihren Anforderungen ändern sollten. Bitte beachten Sie, dass dies gefährlich ist. Erstellen Sie eine vollständige Sicherung, bevor Sie es versuchen. Und Sie müssen vielleicht sogar mit Core-Dateien spielen ... nicht empfehlenswert!

Ich habe das gleiche Problem mit 8 Produkten aus einer Liste von mehr als 400, und ich denke, ich werde nicht mit Magento-Kern und Datenbank durcheinander bringen, können wir die Beschreibung Strings für diese wenigen Produkte reduzieren.

+0

danke. Hier hat sich mein Kunde entschieden, die Daten in mehrere Produkte aufzuteilen. Mein Ansatz wäre gewesen, die Informationen auf eine effektivere Weise zu speichern, die nicht so viel braucht. –

+0

Gern geschehen. Übrigens konnte ich die Länge des Beschreibungsfelds in einigen Zeilen reduzieren, indem ich eine einfache HTML Markup Reinigung durchführte. Ich meine, lösche zusätzliche Leerzeichen, dupliziere " ", leere Absätze usw. Ich weiß nicht, ob du die gleiche Lösung anwenden kannst. – peterfh

0

Die CSV erreichen konnte weniger egal. Da Microsoft Access Memo-Felder erlaubt, die ziemlich viele Daten enthalten können, habe ich 2-3k Beschreibungen im CSV-Format exportiert, um sie recht erfolgreich in Magento zu importieren.

Ihre Einschränkung besteht entweder, weil Sie eine Kalkulationstabelle verwenden, die eine Zellenbeschränkung oder eine Exportbeschränkung für Zellen aufweist oder weil das Feld, in das Sie importieren möchten, eine maximale Zeichenbeschränkung in der Tabelle für dieses Feld enthält.

Sie können letzteres ermitteln, indem Sie phpMyAdmin verwenden, um zu sehen, wie die maximale Zeicheneinstellung für dieses Feld ist.

+0

Wenn Sie die Datei in Microsoft Excel bearbeiten, fallen Ihre Standardeinstellungen unter http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP010342495.aspx ? CTT = 5 & Herkunft = HP005199291 –

+0

Danke für die Antwort. aber Sie haben das vielleicht nicht bemerkt, aber ich habe 65535 gesagt, das ist 65K> 2,3K. Wie bereits erwähnt, habe ich dies gut untersucht, und ich bin mir sicher, dass es in Magento eine Einschränkung der Größe gibt (mein Programm hat keine Einschränkungen, weil mein Programm tatsächlich von mir geschrieben wurde). Ich habe auch festgestellt, dass dies in einer Konstante fest codiert ist, und auch daran erinnert, dass Text in mysql auf 65535 beschränkt ist, muss ich es in Mediumtext ändern. Magento ist leider nicht flexibel dabei. Ich muss Plugin schreiben. Ich bin mir nicht sicher, ob das Ändern von db genug ist. –

+0

Das Problem besteht immer noch darin, ein Programm zu haben, das> 65k pro Feld manipulieren kann und eine Feldbreite hat, die> 65k akzeptieren kann. Die CSV-Datei ist nur ein Transportmedium. Sie können versuchen, den Felddatentyp zu ändern und zu überprüfen, ob er mehr als 65k akzeptiert (vorausgesetzt, der Importcode hat keine fest verdrahtete Grenze). Ich würde einen Testserver zum Experimentieren verwenden. Ich habe die Grenzen für ein Access-Memo-Feld nachgeschlagen und es ist 65k, die Zeichengrenze für Open/Libre Office-Zelleninhalte ist ebenfalls 65k, also würden wir beide etwas anderes benötigen, um CSV mit mehr als 65k in einem Feld zu erzeugen. Excel erlaubt nur 32k, fwiw. –

2

I ändern:

1) in Tabelle catalog_category_entity_text Feldtyp "value" von "Text" auf "long"

2) in der Datei app/code/core/Mage/ImportExport/Modell/Import/Entität/Abstract.php const DB_MAX_TEXT_LENGTH = 65536; bis const DB_MAX_TEXT_LENGTH = 16777215; und alle OK

+0

$ installer-> run ("ALTER TABLE". $ Installer-> getTable ('catalog_product_entity_text'). "MODIFY COLUMN' value' longtext "); –

Verwandte Themen