🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Tabellenformat in Spalten nachträglich ändern
-
- Beiträge: 23
- Registriert: Mi 9. Jul 2014, 16:10
Tabellenformat in Spalten nachträglich ändern
Hallo Forum,
ich habe eine id-Tabellenspalte als Bezug zu einer anderen Tabelle versehentlich als 'Text (VARCHAR) formatiert und damit längere Zeit gearbeitet.
Um Beziehungen bzw. Abfragen zu generieren, muss das Spaltenformat aber 'INTEGER' sein. Dass möchte ich unter Beibehaltung der vorhandenen Daten
gern ändern.
Bekanntlich geht das nicht so einfach, die Meldung nach Änderung lautet: Die xxx-Spalte konnte nicht geändert werden. Soll sie statt dessen gelöscht
und an das neue Format angehängt werden?
Dann sind aber auch alle in dieser Spalte schon vorhandenen Daten verloren.
Gibt es dafür eine Lösung, mit kopieren/anhängen bin ich leider auch gescheitert.
Rentner Heinz
ich habe eine id-Tabellenspalte als Bezug zu einer anderen Tabelle versehentlich als 'Text (VARCHAR) formatiert und damit längere Zeit gearbeitet.
Um Beziehungen bzw. Abfragen zu generieren, muss das Spaltenformat aber 'INTEGER' sein. Dass möchte ich unter Beibehaltung der vorhandenen Daten
gern ändern.
Bekanntlich geht das nicht so einfach, die Meldung nach Änderung lautet: Die xxx-Spalte konnte nicht geändert werden. Soll sie statt dessen gelöscht
und an das neue Format angehängt werden?
Dann sind aber auch alle in dieser Spalte schon vorhandenen Daten verloren.
Gibt es dafür eine Lösung, mit kopieren/anhängen bin ich leider auch gescheitert.
Rentner Heinz
Re: Tabellenformat in Spalten nachträglich ändern
Hallo Heinz,
Angenommen die VARCHAR -Spalte heißt ID und die betroffene Tabelle ist Tabelle1
Wenn in der Spalte ID keine Zahl doppelt vorkommt, dann führst du unter Extras/SQL ... diese Befehle in einem Rutsch aus:
Nun Tabellen/Ansicht/Tabellen aktualisieren.
Fertig. Jetzt hast du eine Autowert-Integer ID.
Anbei eine Beispieldatei, die momentan noch eine VARCHAR ID hat, an der du die Befehle ausprobieren kannst.
Viel Erfolg
Gruß R
Ja, gibt es, wenn du die eingebettete HSQL Datenbank verwendest, mit Firebird kenne ich mich nicht so aus.Rentner Heinz hat geschrieben:Gibt es dafür eine Lösung, mit kopieren/anhängen bin ich leider auch gescheitert.
Angenommen die VARCHAR -Spalte heißt ID und die betroffene Tabelle ist Tabelle1
Wenn in der Spalte ID keine Zahl doppelt vorkommt, dann führst du unter Extras/SQL ... diese Befehle in einem Rutsch aus:
Code: Alles auswählen
ALTER TABLE "Tabelle1" ADD "ID_NEU" INTEGER BEFORE "ID";
UPDATE "Tabelle1" SET "ID_NEU" = CAST ("ID" AS INTEGER);
ALTER TABLE "Tabelle1" DROP "ID";
ALTER TABLE "Tabelle1" ALTER "ID_NEU" RENAME TO "ID";
ALTER TABLE "Tabelle1" ALTER "ID" SET NOT NULL;
ALTER TABLE "Tabelle1" ADD PRIMARY KEY ("ID");
ALTER TABLE "Tabelle1" ALTER "ID" INTEGER GENERATED BY DEFAULT AS IDENTITY;
Fertig. Jetzt hast du eine Autowert-Integer ID.
Anbei eine Beispieldatei, die momentan noch eine VARCHAR ID hat, an der du die Befehle ausprobieren kannst.
Viel Erfolg
Gruß R
- Dateianhänge
-
- Spalte_nachtraeglich_aendern .zip
- nur entpacken
- (19.61 KiB) 415-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO
-
- Beiträge: 23
- Registriert: Mi 9. Jul 2014, 16:10
Re: Tabellenformat in Spalten nachträglich ändern
Guten Abend F3K Total,
das haut noch nicht genau hin, ich nutze die eingebaute HSQL, aber
die zu änderne Spalte soll in eine n:1 Beziehung, enthält also
viele Doppelungen.
Aber schon einmal vielen Dank für Deine Antwort.
Rentner Heinz
das haut noch nicht genau hin, ich nutze die eingebaute HSQL, aber
die zu änderne Spalte soll in eine n:1 Beziehung, enthält also
viele Doppelungen.
Aber schon einmal vielen Dank für Deine Antwort.
Rentner Heinz
Re: Tabellenformat in Spalten nachträglich ändern
Hallo Heinz,
ich blicke noch nicht ganz durch, ist es so:
Die zu ändernde Spalte "ID" (Text) ist nicht der Primärschlüssel der Tabelle (bei doppelten Einträgen geht das ja nicht),sondern die n-Seite einer Beziehung. Primärschlüssel ist eine andere Spalte dieser Tabelle. In der anderen Tabelle ist die "ID" Integer. Somit kannst Du keine Beziehung definieren unter EXTRAS - Beziehungen, weil dann eine Fehlermeldung, Datentypen unverträglich, kommt?
In LO 4.1.6.2 unter openSUSE 13.1 brauche ich in der Tabelle_n nur den Datentyp der Spalte von Text zu Integer ändern (habe es eben mehrfach ausprobiert) und alle Werte, auch die doppelten, bleiben erhalten so wie sie sind. Falls doch irgendwie in EXTRAS - Beziehungen ein entsprechender Eintrag ist, lösche ihn und trage ihn nach der Änderung wieder ein.
Die entsprechend veränderte Beispiel-DB von F3K Total hänge ich an, Tabelle_1 liefert die "ID" (Integer) die zu verändernde Spalte "ID" ist in Tabelle_n. Die kann ich in Integer ändern und alle Werte bleiben erhalten. Abfrage1 zeigt die Ergebnisse. Probiers mal aus.
Wenn es das nicht war, wäre eine Beispiel-DB nett.
Gruß acco
ich blicke noch nicht ganz durch, ist es so:
Die zu ändernde Spalte "ID" (Text) ist nicht der Primärschlüssel der Tabelle (bei doppelten Einträgen geht das ja nicht),sondern die n-Seite einer Beziehung. Primärschlüssel ist eine andere Spalte dieser Tabelle. In der anderen Tabelle ist die "ID" Integer. Somit kannst Du keine Beziehung definieren unter EXTRAS - Beziehungen, weil dann eine Fehlermeldung, Datentypen unverträglich, kommt?
In LO 4.1.6.2 unter openSUSE 13.1 brauche ich in der Tabelle_n nur den Datentyp der Spalte von Text zu Integer ändern (habe es eben mehrfach ausprobiert) und alle Werte, auch die doppelten, bleiben erhalten so wie sie sind. Falls doch irgendwie in EXTRAS - Beziehungen ein entsprechender Eintrag ist, lösche ihn und trage ihn nach der Änderung wieder ein.
Die entsprechend veränderte Beispiel-DB von F3K Total hänge ich an, Tabelle_1 liefert die "ID" (Integer) die zu verändernde Spalte "ID" ist in Tabelle_n. Die kann ich in Integer ändern und alle Werte bleiben erhalten. Abfrage1 zeigt die Ergebnisse. Probiers mal aus.
Wenn es das nicht war, wäre eine Beispiel-DB nett.
Gruß acco
- Dateianhänge
-
- Spalte_nachtraeglich_aendern_1.zip
- Datei entpacken
- (26.49 KiB) 404-mal heruntergeladen
openSUSE Tumbleweed - LibreOffice 24.8.2.1
Re: Tabellenformat in Spalten nachträglich ändern
Na, oder du läßt der Primäschlüssel-Autowert-Teil der SQL-Befehle einfach weg:
Gruß R
Code: Alles auswählen
ALTER TABLE "Tabelle1" ADD "ID_NEU" INTEGER BEFORE "ID";
UPDATE "Tabelle1" SET "ID_NEU" = CAST ("ID" AS INTEGER);
ALTER TABLE "Tabelle1" DROP "ID";
ALTER TABLE "Tabelle1" ALTER "ID_NEU" RENAME TO "ID";
Windows 11: AOO, LO Linux Mint: AOO, LO
-
- Beiträge: 23
- Registriert: Mi 9. Jul 2014, 16:10
Re: Tabellenformat in Spalten nachträglich ändern
Hallo F3K Total,
nachdem ich den SQL-Befehl ohne Bezug auf den Primärschlüssel-Autowert eingegeben habe, bekomme ich
folgende Meldung:
>Wrong data typ:java.lang.NumberFormatExeption: For input string:"Haushalt"
Bei "Haushalt" handelt es sich um den Namen der Datenbank.
Die Tabelle heißt "HH-Buchungen" und die zu ändernde Spalte heißt "KtoID".
Kannst Du mir bitte noch einmal helfen?
Gruß
Rentner Heinz
nachdem ich den SQL-Befehl ohne Bezug auf den Primärschlüssel-Autowert eingegeben habe, bekomme ich
folgende Meldung:
>Wrong data typ:java.lang.NumberFormatExeption: For input string:"Haushalt"
Bei "Haushalt" handelt es sich um den Namen der Datenbank.
Die Tabelle heißt "HH-Buchungen" und die zu ändernde Spalte heißt "KtoID".
Kannst Du mir bitte noch einmal helfen?
Gruß
Rentner Heinz
-
- Beiträge: 23
- Registriert: Mi 9. Jul 2014, 16:10
Re: Tabellenformat in Spalten nachträglich ändern
Noch einmal Hallo F3K,
eine weitere Meldung nach dem SQL lautet wie folgt:
2: Column already exists: KtoID_Neu in statement [ALTER TABLE "HH_Buchungen" ADD "KtoID_Neu" INTEGER ]
Was mache ich nicht richtig?
Gruß
Rentner Heinz
eine weitere Meldung nach dem SQL lautet wie folgt:
2: Column already exists: KtoID_Neu in statement [ALTER TABLE "HH_Buchungen" ADD "KtoID_Neu" INTEGER ]
Was mache ich nicht richtig?
Gruß
Rentner Heinz
-
- Beiträge: 23
- Registriert: Mi 9. Jul 2014, 16:10
Re: Tabellenformat in Spalten nachträglich ändern
... und nun noch zum dritten ...
es wird zwar eine neue Spalte als "KtoID_Neu" in die Tabelle eingefügt und auch mit Format 'Integer',
aber die Spalte bleibt leer und an der Orginal-Spalte ändert sich auch nichts.
So, für heute ist Schluss.
Gruss Rentner Heinz
es wird zwar eine neue Spalte als "KtoID_Neu" in die Tabelle eingefügt und auch mit Format 'Integer',
aber die Spalte bleibt leer und an der Orginal-Spalte ändert sich auch nichts.
So, für heute ist Schluss.
Gruss Rentner Heinz
Re: Tabellenformat in Spalten nachträglich ändern
Hallo Heinz,
poste doch mal den genauen Code, oder eine Beispiel_DB. Irgendwo hast Du anscheinend den Datenbanknamen statt des Tabellennamens eingegeben.
Gruß acco
poste doch mal den genauen Code, oder eine Beispiel_DB. Irgendwo hast Du anscheinend den Datenbanknamen statt des Tabellennamens eingegeben.
Gruß acco
openSUSE Tumbleweed - LibreOffice 24.8.2.1
-
- Beiträge: 23
- Registriert: Mi 9. Jul 2014, 16:10
Re: Tabellenformat in Spalten nachträglich ändern
Hallo Acco, hallo F3K Total,
nachdem ich in meiner Tabelle nach langem Suchen einige falsch formatierte
Einträge gefunden und bereinigt habe, hat der Code von F3K Total genau
gepaßt; und zwar der ohne den Primärschlüssel-Autowert.
Tut mir leid, dass ich erst einige Verwirrung gestiftet habe, aber so
sind Rentner ja wohl manchmal.
Jungs, Ihr habt mir riesig geholfen. Danke!
Rentner Heiz
nachdem ich in meiner Tabelle nach langem Suchen einige falsch formatierte
Einträge gefunden und bereinigt habe, hat der Code von F3K Total genau
gepaßt; und zwar der ohne den Primärschlüssel-Autowert.
Tut mir leid, dass ich erst einige Verwirrung gestiftet habe, aber so
sind Rentner ja wohl manchmal.
Jungs, Ihr habt mir riesig geholfen. Danke!
Rentner Heiz
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.