Base:: in eine Tabelle kopieren

Hallo,

ich habe ein Base-Dokument erstellt, dabei habe ich drei Tabellen in der Entwurfsansicht erstellt und Beziehungen definiert.

Nun möchte ich die Tabellen füllen. Die Inhalte habe ich in einer separaten Tabelle (Calc mit drei Sheets) vorliegen. Ich möchte aber keine Verknüpfung zwischen der Calc-Tabelle und der Datenbank haben. Ich will nur die Inhalte rüberkopieren.
Ein einfaches Copy&Paste funktioniert nicht. Dabei wird alles in eine einzelne Zelle eingefügt...
Wie macht man das richtig?

Danke für Hilfe,
Micha

Hallo Micha,

wie Du Tabelleninhalte in ein bestehendes Schema einfügst, kann ich Dir jetzt nicht sagen. Aber es gibt eine einfache Möglichkeit aus Tabelleninhalten eine neue Tabelle erstellen kannst. Du markierst Deine Tabelleninhalte und kopierst sie. Unter Base machst Du einen Rechtsklick. Der Assistenz führt dich dann durch die einzelnen Schritte. Es ist also erstmal keine Tabellendefinition nötig.

Gruß

Ralf

Nachtrag:
Wenn ich eine neue DB auf Grundlage der Tabelle erstelle, dann habe ich zwar die Daten, kann aber z.B. keine Formate der Attribute festlegen, keine Primärschlüssel usw. Vermutlich klappt das mit den Beziehungen dann auch nicht?

Micha

PS: Ich habe eben gesehen, dass man mit demselben Assistenten auch Daten an eine bestehenden Tabelle anhängen kann. Dann muss man "Daten anhängen" auswählen.

Ralf Kestler schrieb:

PS: Ich habe eben gesehen, dass man mit demselben Assistenten auch Daten
an eine bestehenden Tabelle anhängen kann. Dann muss man "Daten
anhängen" auswählen.

Danke, ich probiere es mal aus!

Micha

Hallo Micha,

ich habe ein Base-Dokument erstellt, dabei habe ich drei Tabellen
in der Entwurfsansicht erstellt und Beziehungen definiert.

Also mit der internen HSQLDB. Hast Du bei den Tabellen auch den
Primärschlüssel entsprechend definiert?

Nun möchte ich die Tabellen füllen. Die Inhalte habe ich in einer
separaten Tabelle (Calc mit drei Sheets) vorliegen. Ich möchte aber
keine Verknüpfung zwischen der Calc-Tabelle und der Datenbank
haben. Ich will nur die Inhalte rüberkopieren. Ein einfaches
Copy&Paste funktioniert nicht. Dabei wird alles in eine einzelne
Zelle eingefügt...

Genau das müsste auch so funktionieren:
Inhalt in den Tabellencontainer ziehen.
Zieltabelle in dem Assistenten eingeben, dann noch "Daten anhängen"
und ggf. "Erste Zeile als Spaltennamen verwenden" markieren (falls Du
Spaltennamen hast) → Weiter
Spalten zuordnen (geht bei der Quelltabelle und bei der Zieltabelle,
ich habe das gerade bei der Zieltabelle gemacht, da meine Quelltabelle
kein Schlüsselfeld hat - habe also das Schlüsselfeld rausbewegt - wird
per AutoWert erstellt)

Wenn Du das nicht mit Ziehen und Ablegen machen willst, dann kannst Du
die Quelltabelle auch kopieren, die Zieltabelle markieren und dort
über das Kontextmenü "Einfügen" wählen. Dann wird die Tabelle direkt
im Assistenten angezeigt und der Inhalt als anzufügender Inhalt erkannt.

Was nicht klappt: Eine Tabelle öffnen und dann den Inhalt rüber
ziehen. Dann landet alles in einer Zelle der Tabelle.

Gruß

Robert

Mit zwei Tabellen geht es, bei der dritten erhalte ich folgende Fehlermeldung:

https://www.dropbox.com/s/xuyegqd8aqo0mt7/Fehlermeldung.jpg?dl=0

Was mache ich damit?

Micha

Hallo Micha,

Mit zwei Tabellen geht es, bei der dritten erhalte ich folgende
Fehlermeldung:

https://www.dropbox.com/s/xuyegqd8aqo0mt7/Fehlermeldung.jpg?dl=0

... no parent SYS...

Die Tabelle ist mit einer anderen verbunden. Die andere Tabelle
enthält Daten, die über einen Fremdschlüssel in Deine dritte Tabelle
eingetragen sind. Da steht dann z.B.
3 → Berlin
In Deiner dritten Tabelle steht jetzt z.B. für irgendeine Stadt die
Nr. 15 - aber Deine Städtetabelle hat gar keine Nr. 15. Das Elternteil
(Primärschlüssel in der anderen Tabelle) fehlt also hier.

Gruß

Robert

Robert Großkopf schrieb:

Das Elternteil
(Primärschlüssel in der anderen Tabelle) fehlt also hier.

Lieber Robert,

danke für das Entschlüsseln der - wie ch finde - wenig userfreundlichen Fehlermeldung. Leider erfahre ich als User auch nicht, bei welchem Datensatz es Probleme gab. Nach diesem Problem wird wohl auch ganz abgebrochen, statt dass nach dem fraglichen Datensatz einfach weiter gemacht würde...

Micha

Hallo Micha,

danke für das Entschlüsseln der - wie ch finde - wenig
userfreundlichen Fehlermeldung.

Das ist eine Fehlermeldung der HSQLDB-Datenbank. Die können sicher
nicht alle übersetzt werden - zumal die Datenbank selbst schon sehr in
die Jahre gekommen ist.

Wie bist Du denn Vorgegangen, um die Tabellen auf den Import vor zu
bereiten. Ist für mich sowieso erstaunlich, dass Du aus einer
Tabellenkalkulation 3 Tabellen ziehst, die in einer Beziehung
zueinander stehen - mit Fremdschlüssel usw.

Du kannst jetzt folgendermaßen vorgehen:
Die Tabelle, die sich nicht einfügen lässt, musst Du unter Extras →
Beziehungen aus der Verbindung lösen. Manchmal klappt so etwas nicht
direkt. Wenn ich hier an den Beziehungen etwas verändere, dann gehe
ich immer den sicheren Weg: Tabelle daraus löschen - Beziehungen
speichern - Base schließen - Base öffnen - Beziehungen ansehen ...
Wenn die Tabelle dort nicht mehr auftaucht, dann sind die
Fremdschlüssel als solche auch nicht mehr definiert. Jetzt kannst Du
die Daten importieren.

Anschließend musst Du den entsprechenden Datensatz finden, bei dem es
keinen passenden Fremdschlüssel gibt. Das kannst Du über eine Abfrage
herausfinden:
SELECT * FROM "Tabelle" WHERE "Ort_ID" NOT IN (SELECT "ID" FROM "Ort")
... wenn z.B. in "Tabelle" in dem Feld "Ort_ID" ein Eintrag drin
steckt, der nicht zur Tabelle "Ort" passt.
Den Eintrag kannst Du bearbeiten, gegebenenfalls etwas in der Tabelle
"Ort" dazu nachtragen. Wenn die Abfrage leer bleibt und auch bei
anderen Fremdschlüsseln leer bleibt, dann kannst Du anschließend die
Tabelle unter Extras → Beziehungen wieder einfügen und verbinden.

Gruß

Robert

Robert Großkopf schrieb:

Wie bist Du denn Vorgegangen, um die Tabellen auf den Import vor zu
bereiten. Ist für mich sowieso erstaunlich, dass Du aus einer
Tabellenkalkulation 3 Tabellen ziehst, die in einer Beziehung
zueinander stehen - mit Fremdschlüssel usw.

Ich wollte die Datenbank von videocenter.schule.de mit LibreOffice nachstellen. Dort gibt es die drei Tabellen mit entsprechender Beziehung.

Ich habe in LO also erstmal die Tabellen leer definiert, dann die Daten aus der Online-DB anzeigen lassen und kopiert und in ein Calc-Dokument eingefügt. Dann noch etwas die Daten geändert, damit LO sie versteht (die Online-DB arbeitet mit dem Zeitpunkt 0000-00-00 für "nicht eingetragenes Datum", daraus habe ich 1900-01-01 gemacht.)

Nun wollte ich diese Inhalte in meine LO-Datenbank eintragen.

Inzwischen ist das Problem nicht mehr so aktuell, ich brauche die LO-DB zurzeit nicht mehr... In einem halben Jahr frage ich vielleicht wieder an... :slight_smile:

Danke für die Hilfe!

Micha

Hallo Micha,

Ich wollte die Datenbank von videocenter.schule.de mit LibreOffice
nachstellen. Dort gibt es die drei Tabellen mit entsprechender
Beziehung.

Ich habe in LO also erstmal die Tabellen leer definiert, dann die
Daten aus der Online-DB anzeigen lassen und kopiert und in ein
Calc-Dokument eingefügt. Dann noch etwas die Daten geändert, damit
LO sie versteht (die Online-DB arbeitet mit dem Zeitpunkt
0000-00-00 für "nicht eingetragenes Datum", daraus habe ich
1900-01-01 gemacht.)

Lass solche Felder leer - ein nicht eingetragenes Datum muss doch
nicht durch ein Datum geschrieben werden, das es gar nicht gibt.

Ich schaue mir vielleicht einmal die Datenbank an. Auf jeden Fall
werde ich wohl noch einmal nachsehen, ob ich die Beschreibung für so
einen Import im Handbuch etwas erweitern sollte.

Gruß

Robert