Seite 1 von 1

[gelöst] Zyklischer Import von Daten

Verfasst: Di 5. Jan 2021, 17:04
von deife
Hallo Leute,

ich mühe mich schon einige Zeit mit dem Problem ab und komme kein Stück weiter. Bisher habe ich die Daten in Calc und wollte diese jetzt auf Base rüberziehen. Das hat auch gut funktioniert - im wörtlichen Sinne. Ich habe Calc und Base geöffnet und das Tabellenblatt aus Calc in das Tabellenfenster in Base gezogen.

Dabei gibt es anscheinend ein paar Feinheiten. Wenn ich die Daten unverändert lasse, dann klappt es. Aber wenn ich einen Primärschlüssen möchte, dann kommt die Fehlermeldung, dass das SQL-Statement zu lang ist. Tatsächlich habe ich in meinem aktuellen Datensatz ein Textfeld mit ca. 700 Zeichen.

Seltsam finde ich auch, dass das Datenformat der Spalte aus Calc nicht übernommen wird. So sind in einer Spalte nur Datumangaben. Beim Import in Base sind alle Spalten als Text-Spalten angelegt. Wenn ich diese dann nachoptimiere und DATE daraus mache, dann erscheint eine Fehlermeldung (Formatfehler) beim Versuch Daten anzuhängen.

Mit der Standard-Variante habe ich zwar die Daten drin, aber es handelt sich dabei um meine Kontoauszüge, die ich im Nachgang in Kategorien einteilen möchte, ähnlich wie ein Haushaltsbuch. D.h. alle paar Monate müsste ich den CSV-Export meiner Bank in diese Datenbank importieren und ich hab keine Ahnung wie das gehen soll (direkt, über separate Tabelle und Abfrage, Makro, ...???).

Vielleicht noch etwas zu mir. Ich habe früher viel mit Access gemacht und hatte nicht erwartet, dass es eine so schwere Geburt wird.

Vielen Dank im voraus.

Grüße
deife

Re: Zyklischer Import von Daten

Verfasst: Di 5. Jan 2021, 17:13
von Pit Zyclade
Eigentlich sind das mehrer Fragen und eigentlich hast du nicht erklärt, was du unter "zyklischem Import" verstehst.

Du kannst also korrekt deine calc-Tabelle in eine Base-Tabelle überführen (ja/nein).
Wenn du dann eine weitere Base-Tabelle gleicher Bauart mit anderen Spalteneigenschaften erzeugst und dann die Spalten von der einen in die andere übeträgst ?

Re: Zyklischer Import von Daten

Verfasst: Di 5. Jan 2021, 17:39
von deife
naja, der zyklische Import wäre, dass es sich nicht um eine einmalige Konvertierung von Calc auf Base handelt, sondern dass es jeden Monat eine neue CSV bzw. Calc-Datei gibt, deren Daten in Base an eine bestehende Tabelle angehängt werden sollen.

die Daten aus Calc werden in Base eingefügt, aber für meine Zwecke unbrauchbar, weil ich einen Primärschlüssel brauche. Sobald ich den Primärschlüssen erzeugen lasse, funktioniert der Import nicht mehr.

Auch kann ich die Datensätze aus der Tabelle ohne Primärschlüssel nicht in eine Tabelle mit Primärschlüssel kopieren, weil dann die Fehlermeldung kommt:

Code: Alles auswählen

Attempt to insert null into a non-nullable column: column: ID table: Tabelle12 in statement [INSERT INTO "Tabelle12" ( "alle Spalten bis auf ID....") VALUES ( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)]

Re: Zyklischer Import von Daten

Verfasst: Di 5. Jan 2021, 17:44
von deife
Jetzt hab ich es geschafft. Hatte den Autowert vergessen. Meine Vorgehensweise ist jetzt so:
1. CSV mit Calc öffnen
2. Calc Tabellenblatt in Base ziehen
3. importiere Tabelle auf Tabelle mit Primärschlüssel ziehen
4. Anpassen der Spaltenzuordnung, weil die neue Tabelle eine Spalte mehr hat (ID), etwas mühsam, weil die markierte Zeile immer wieder wegspringt.
5. Import starten

Etwas mühsam. Gibt es dafür einen einfacheren Weg?

Re: Zyklischer Import von Daten

Verfasst: Di 5. Jan 2021, 17:45
von deife
hab gerade festgestellt, dass die Formatanpassung der Datumsspalte auf das Base-Datum nicht funktioniert. Es erscheint folgende Fehlermeldung:

Code: Alles auswählen

SQL-Status: 37000
Fehlercode: -16

Wrong data type: java.lang.IllegalArgumentException
Soll ich dazu ein ein neues Thema erstellen?

Re: Zyklischer Import von Daten

Verfasst: Di 5. Jan 2021, 18:19
von RobertG
Hallo deife,

zuerst einmal zu der Reihenfolge beim Importassistenten: Der geht stumpf nach der Reihenfolge, die die Felder in den Tabellen haben. Die einfachste Lösung wäre also, genau die gleiche Feldreihenfolge in der Tabelle zu nehmen wie in der Vorlage und das Feld für den Primärschlüssel hinten an zu hängen. Alternativ packst Du bei Deiner Calc-Datei eine Spalte "ID" davor - ohne Inhalt.

Ich habe mir übrigens so einen *.csv-Import auch schon einmal per Makro zusammengebaut. Muss mal sehen, dass ich das wieder ausgrabe und mit einer richtigen Beschreibung versehe. Ich habe das für Sportwettbewerbe gemacht, bei denen die Meldungen als *.csv-Datei abgegeben werden sollten.

Zum Datumsformat: Zeige doch einmal an, wie das denn in der Vorlage aussieht - am besten eine Calc-Datei mit einem so eingelesenen Datum. Braucht ja nur genau das Datum zu sein.

Gruß

Robert

Re: Zyklischer Import von Daten

Verfasst: Di 5. Jan 2021, 19:11
von deife
Hallo Robert,

das mit der leeren Spalte in Calc hat beim ersten Test super funktioniert.

Was ist mit dem Datumsformat gemeint? in Calc ist die Zellformatierung auf Datum TT.MM.JJ und in Calc kommt Text an. Nachträgliches ändern klappt leider nicht.

Grüße
deife

Re: Zyklischer Import von Daten

Verfasst: Di 5. Jan 2021, 19:14
von deife
Irgendwie hab ich schon zuviel hin und her probiert.

Zwischenzeitlich habe ich wieder die Meldung bekommen, dass die Länge des SQL Statements zu lang ist, dann ich Base mal abgestürzt und jetzt klappt auch der Import der Datumsspalten..... ???

momentan sieht es gut aus.

danke.

Re: Zyklischer Import von Daten

Verfasst: Di 5. Jan 2021, 20:06
von RobertG
Hallo deifie,

ich nehme an, dass der Import nach Calc aus der *.csv-Datei bereits ein Datum als Text erzeugte. Ich weiß nicht auswendig, welche Optionen da alle dabei sind, die Du während des Imports der *.csv-Datei nach Calc nutzen kannst.

Text in Calc erkennst Du in der Regel daran, dass dann in der Eingabezeile von Calc vor dem Datum ein ' seteht, also z.B. '05.01.12

Gruß

Robert

Re: Zyklischer Import von Daten

Verfasst: Mi 6. Jan 2021, 08:52
von deife
Hallo Robert,

ja, beim Import in Calc kann man für die Spalte das Zellenformat angeben. Das mit dem ' konnte ich nicht nachvollziehen, aber ein Datum ist standardmäßig rechtsbündig und ein Text ist linksbündig.

Ich hab soviel hin und her probiert, dass ich gar nicht mehr weiß, wie die Rahmenbedingungen genau waren. Sicher ist jedoch, dass die Zellenformatierung aus Calc nicht nach Base übernommen wird, sondern alles als TEXT importiert wird. Stelle ich mir auch etwas schwierig vor, weil in Calc jede einzelne Zelle theoretisch ein andere Format haben könnte.

Aber wenn die importierte Datenstruktur angepasst wird und anschließend mit "Daten anhängen" der Import neu gestartet wird, dann klappt es. Warum es bei mir zuerst nicht funktioniert hat, kann ich nicht mehr nachvollziehen. Vielleicht habe ich beim Einlesen der CSV die Angabe DATUM vergessen. Oder mit der Datei selbst hat etwas nicht gestimmt, weil es anscheinend einen Unterschied macht, ob ich das Tabellenblatt in Calc von einer CSV- oder einer ODS-Datei ist.

Ich mach mal weiter, war sicher nicht die letzte Frage....
Danke

Grüße
deife