Import von Tabelle - Zeilenumbrüch erhalten

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Import von Tabelle - Zeilenumbrüch erhalten

Beitrag von RobertG »

Hallo Simson,

die Varchar-Felder können keine Zeilenumbrüche darstellen. Wenn Du stattdessen ein Memo-Feld (LONGVARCHAR) nimmst, dann ist dies zwar dazu in der Lage, zeigt aber leider auch die aus Calc importierten Zeilenumbrüche nicht an. Absätze sind daran erkennbar, dass Worte direkt hinter dem vorhergehenden Punkt stehen.

Gruß

Robert
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Import von Tabelle - Zeilenumbrüch erhalten

Beitrag von RobertG »

Hallo Simson,

ich habe jetzt noch etwas probiert und eine, wenn auch recht eigenwillige, Variante gefunden, um die Zeilenumbrüche von Calc in eine Base-Tabelle der internen Datenbank zu überführen.
1. Schritt: Exportiere von Calc die Daten in eine *.csv-Datei.
2. Schritt: Erstelle in Deiner *.odb-Datei, die auf einer internen HSQLDB beruht, eine Textdatei mit genau den Feldern, die die *.csv-Datei enthält.
3. Schritt: Kopiere anschließend diese Textdatei wieder und füge sie als normale Tabelle der HSQLDB-Datenbank ein.

Der 2. Schritt hier im Detail:
Du musst Dir klar sein, welche Eigenschaften die Felder Deiner exportierten *.csv-Datei haben. Dann wird über Extras > SQL eine Texttabelle für diese *.csv-Datei erstellt. Hier ein Beispielcode für so etwas:

Code: Alles auswählen

CREATE TEXT TABLE "csv" ("ID" INT PRIMARY KEY, "TextMitUmbruch" LONGVARCHAR, "TextOhneUmbruch" VARCHAR(100), "Datum" DATE);
Für die entsprechenden Datentypen schau einfach im Handbuch nach. Vermutlich wirst Du noch verschiedene Zahlentypen brauchen. Achte darauf, dass Datumswerte im für Datenbanken üblichen Format Jahr-Monat-Tag abgelegt sind. Der Dezimaltrenner für Dezimalzahlen muss ein Punkt sein.

Jetzt musst Du von der *.csv-Datei die erste Zeile entfernen, da die vermutlich die Spaltenbeschriftungen enthält. Steht da z.B. ID für das erste Feld, so ist das natürlich keine Integer-Zahl. Deswegen also die Spaltenbeschriftungen raus nehmen.

Code: Alles auswählen

SET TABLE "csv" SOURCE "Calctable.csv;encoding=UTF-8";
Mit diesem Befehl wird der Tabelle mit dem Namen "csv" die aus Calc exportierte "Calctable.csv" zugewiesen.

Jetzt musst Du über Ansicht > Tabellen aktualisieren die Tabelle sichtbar machen. Die ist für die GUI noch nicht zu sehen, da Du direkt über SQL mit der Datenbank kommuniziert hast. Wenn Du auf die Tabelle klickst, dann wirst Du Zeilenumbrüche in der LONGVARCHAR-Spalte "TextMitUmbruch" sehen.

Damit ist der 2. Schritt beendet. Jetzt nur noch die Tabelle kopieren (rechte Maustaste > kopieren) und unter neuem Namen wieder einfügen. Damit bekommst Du eine Tabelle, die in der HSQLDB mit Zeilenumbrüchen den ursprünglichen Inhalt Deiner Calc-Tabelle zeigt.

Theoretisch könntest Du auch die *.csv-Datei nutzen. Nur ist das von der Sicherheit der Daten nicht empfehlenswert. Die *.csv-Datei liegt ja weiterhin, für andere Programme offen zugänglich, dort, wo Du sie abgespeichert hast. Eine falsche Bearbeitung und die Daten sind futsch.

Gruß

Robert
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Import von Tabelle - Zeilenumbrüch erhalten

Beitrag von RobertG »

Hallo Simson,
Simson hat geschrieben: So, 20.08.2017 18:51 Allerdings konnten bei mir auch die VARCHAR-Felder Zeilenumbrüche speichern.
Ja, das Speichern ist da nicht das Problem, nur die Darstellung in der Tabelle. Statt der Umbrüche wird einfach der folgende Absatz ohne Leerzeichen angehängt. Wenn Du Varchar-Felder mit Zeilenumbrüchen im Bericht siehst, dann sind die Umbrüche wieder da.

Gruß

Robert
Antworten