Lange Texte werden abgeschnitten beim Import aus Excel, CSV etc.

22. Juli 2018

Dieser Tage habe ich Produktdaten aus einer Excel-Datei nach Access 2016 importiert und leider erst viele Arbeitsschritte später entdeckt, dass der Text mit Produktbeschreibungen nach 255 Zeichen abgeschnitten war.

Ich habe dann mit XLS, XLSX, CSV etc. experimentiert, habe die Excel-Datenblätter wahlweise importiert oder eingebunden -  nichts konnte Access dazu bewegen, den gesamten Text zu übernehmen.

Schließlich fanden wir heraus, dass man Zugriff auf den gesamten Text erhält, wenn man das Datenblatt einbindet und eine Abfrage auf der eingebundenen Tabelle anlegt, in der man irgendeine String-Operation auf das Textfeld anwendet, z.B. Replace([Textfeld];"a";"a").

Die so zugänglich gemachten Texte kann man dann wiederum z.B. über eine Anfüge-Abfrage problemlos in einer Access-Tabelle mit entsprechend großen Textfeldern speichern.

Gleiches Problem beim Export

Inzwischen haben wir gelernt, dass es beim Export ähnlich ist: Wenn man Texte via Abfrage nach Excel exportiert, geht offensichtlich die Information verloren, dass ein Feld vom Typ "Memo" ("Langer Text") ist.

Hier schafft eine temporäre Tabelle Abhilfe, in welche die Daten zunächst eingetragen werden. Wird dann diese Tabelle direkt exportiert, also ohne dazwischenliegende Abfrage, so wird der gesamte Inhalt des Memo-Feldes nach Excel übertragen.

Kommentare (3)

  • Christian Koch (Access-FEE)
    am 14.04.2022
    Hallo,

    hatten Sie mal getestet, was passiert, wenn in einer der ersten 8 Zeilen in der betroffenen Spalte ein Text länger als 256 Zeichen steht?

    Der Import sollte dann in dieser Spalte nichts mehr abschneiden.

    Viele Grüße und schöne Ostern
    Christian Koch
    Access-Fee.de
    • Anna
      am 14.04.2022
      Hallo Herr Koch,

      das wird vermutlich funktionieren, denn Access leitet ja aus den ersten Zeilen einer Excel-Datei den Datentyp ab. Leider passt das aber nicht immer: Es kann sein, dass in einer Adress-Datei viele Adressen mit einer numerischen PLZ stehen und dann kommt die erste ausländische Adresse mit einer alphanumerischen PLZ...

      Und das Abschneiden der Daten ist halt besonders ärgerlich, weil es da nicht einmal eine Fehlermeldung gibt.

      Schöne Grüße
      Anna
  • Ansgar Weltermann
    am 11.07.2022
    Vielleicht noch einfachere Lösung, so dass man die Daten direkt in einer Tabelle erhält:
    1. zunächst Datenimport aus Excel wie gewohnt durchführen (mit Abschneiden der entsprechenden "Long Text"-Datenfelder durch Access)
    2. Importierte Datensätze löschen, so dass man nur die "leere" Tabellenstruktur behält
    3. Im Eigenschaftenblatt der Tabelle den Eintrag in "Format" des/der "Long-Text"-Datenfelder löschen
    4. Dann neuerlich Datenimport, aber mit der Funktion "Fügen Sie eine Kopie der Datensätze an folgende Tabelle an:" (entsprechende "leere" Tabelle auswählen)
    (5. Dann (wenn gewünscht), Primärschlüssel auswählen bzw. neu hinzufügen)
    LG Ansgar
    • Anna
      am 12.07.2022
      Hallo Ansgar,

      danke für diesen Tipp! Ich weiß gar nicht, warum ich das damals nicht so gemacht habe, aber manchmal ist man ja einfach betriebsblind :-)

      Schöne Grüße
      Anna
  • Joachim
    am 14.12.2022
    Danke für den Tipp! Noch ein kleiner Hinweis, ohne den es bei mir nicht funktioniert hat:

    Beim Export von Daten muss die mittels Abfrage erzeugte Tabelle zuerst noch editiert werden und das Feld, das den Memotext enthalten soll, auf "Memo" (long text) gesetzt werden, dann die vorhandenen Daten in der Tabelle löschen und die Abfrage zur Füllung der Tabelle erneut ausführen. Der direkte Export der Tabelle führt dann zum gewünschten Ergebnis.
    • Anna
      am 19.02.2023
      Ja, das meinte ich mit der "temporären Tabelle". Ich lege diese Tabelle halt gleich an, aber man kann sie genauso gut mit einer Abfrage erzeugen lassen und dann die Textfelder auf "long text" setzen.

Neue Antwort auf Kommentar schreiben