Ich arbeite mit D3 und Interbase an einer SQL-Datenbank und habe da
folgendes Problem:
Jedesmal, wenn ich die Struktur einer Tabelle (oder nur den Namen eines
Feldes) aendern will, wird die Tabelle komplett neu angelegt und alle
Daten gehen verloren. Da die Datenbank aber schon z.T. benutzt wird, die
Tabellen also reale Daten enthalten, ist dieser Datenverlust natuerlich
nicht akzeptabel. Ich habe mir bisher geholfen, die Daten von Hand in
eine temporaere Tabelle zu verschieben, dies ist langsam aber ziemlich
aufwendig.
Kennt jemand von Euch vielleicht ein kleines Prograemmchen, mit dem ich
die Tabellen umstrukturieren kann, ohne das die Daten verloren gehen?
Ich koennte dies zwar selbst programmieren, aber warum das Rad neu
erfinden...
Gruss, Christian
>Jedesmal, wenn ich die Struktur einer Tabelle (oder nur den Namen eines
>Feldes) aendern will, wird die Tabelle komplett neu angelegt und alle
>Daten gehen verloren.
Welche Datenbank? Wie änderst Du die Struktur?
In SQL gibt es ALTER TABLE, sogar Local SQL unterstützt das
einigermaßen.
Ciao, MM
--
Marian Maier, Gamma Soft, Hainstraße 8, 53121 Bonn, Germany
Tel: +49 228 624013 Fax: +49 228 624031
http://www.gammasoft.de/maier
"Was schiefgehen kann geht schief"
>Jedesmal, wenn ich die Struktur einer Tabelle (oder nur den Namen eines
>Feldes) aendern will, wird die Tabelle komplett neu angelegt und alle
>Daten gehen verloren. Da die Datenbank aber schon z.T. benutzt wird, die
>Tabellen also reale Daten enthalten, ist dieser Datenverlust natuerlich
>nicht akzeptabel.
Am besten über ein SQL-Statement. In einem Delphi-Programm z.B. so:
AddField := TQuery.Create(nil);
try
AddField.SQL.Add("alter table foo add NeuesFeld integer;");
AddField.ExecSQL;
finally
AddField.Free;
end;
oder über den WiSQL. Das entscheidende ist das "alter" Statement.
Wenn Du NOT NULL - Felder hinzufügst, denk daran dieses Feld für alle
vorhandenen Datensätze auch zu füllen.
Oliver
--
50°00'00" N
08°36'32" E
Da ich gedenke, bald ebenfalls auf InterBase umzusteigen, interessiert mich
diese Sache sehr. Habe daher eben ausprobiert, in einer Test-Datenbank die
Struktur zu ändern...
>Jedesmal, wenn ich die Struktur einer Tabelle (oder nur den Namen eines
>Feldes) aendern will, wird die Tabelle komplett neu angelegt und alle
>Daten gehen verloren.
Das kann ich hier jedoch nicht nachvollziehen.
Mittels ISQL habe ich ein "ALTER TABLE tablename ADD spaltenname CHAR(10)"
abgesetzt. Wie erwartet berührt das jedoch NICHT die bisher enthaltenen
Daten.
Wie hast Du denn genau die Struktur geändert?
>Da die Datenbank aber schon z.T. benutzt wird, die
>Tabellen also reale Daten enthalten, ist dieser Datenverlust natuerlich
>nicht akzeptabel. Ich habe mir bisher geholfen, die Daten von Hand in
>eine temporaere Tabelle zu verschieben, dies ist langsam aber ziemlich
>aufwendig.
Wenn das wirklich so wäre, käme das einem K.O.-Kriterium für InterBase
gleich...
Ciao
Georg
wie änderst Du denn die Struktur?
Hast Du es schon mal via SQL versucht (ALTER TABLE ....)
Wenn ja, dann ist dieses Verhalten etwas komisch für eine SQL-Datenbank.
Volker
Christian Hempe schrieb:
>
> Hallo!
>
> Ich arbeite mit D3 und Interbase an einer SQL-Datenbank und habe da
> folgendes Problem:
> Jedesmal, wenn ich die Struktur einer Tabelle (oder nur den Namen eines
> Feldes) aendern will, wird die Tabelle komplett neu angelegt und alle
> Daten gehen verloren. Da die Datenbank aber schon z.T. benutzt wird, die
> Tabellen also reale Daten enthalten, ist dieser Datenverlust natuerlich
> nicht akzeptabel. Ich habe mir bisher geholfen, die Daten von Hand in
> eine temporaere Tabelle zu verschieben, dies ist langsam aber ziemlich
> aufwendig.
> Kennt jemand von Euch vielleicht ein kleines Prograemmchen, mit dem ich
> die Tabellen umstrukturieren kann, ohne das die Daten verloren gehen?
> Ich koennte dies zwar selbst programmieren, aber warum das Rad neu
> erfinden...
>
> Gruss, Christian
--
Volker Fraenkle CS Controlling
Technical Consultant Software Systeme GmbH
E-Mail: VFra...@cs-controlling.de
Phone: +49 7144 8144-0 Riedbachstrasse 5
Fax: +49 7144 8144-10 D-74385 Pleidelsheim
Gruss, Christian
Hallo Christian:
Umbenennen eines Feldes geht nicht. Lege ein neuse Feld mit
dem gewünschten namen an und belege es mit den werten aus dem alten feld.
Danach das alte feld wegwerfen:
alter table xxx add neuername altertyp;
update table xxx set neuername=altername;
alter table xxx drop altername;
hth
Martin
ich kenne die Interbase zwar nicht, arbeite aber
selbst mit SQL Datenbanken, allerdings unter Linux.
Wenn die Interbase kein ALTER TABLE unterstuetzt wuerde
ich sagen, klopp das ding in die Muelltonne.
Wie aenderst du denn die Struktur ?
Christian Hempe wrote:
>
> Hallo!
>
> Ich arbeite mit D3 und Interbase an einer SQL-Datenbank und habe da
> folgendes Problem:
> Jedesmal, wenn ich die Struktur einer Tabelle (oder nur den Namen eines
> Feldes) aendern will, wird die Tabelle komplett neu angelegt und alle
> Daten gehen verloren. Da die Datenbank aber schon z.T. benutzt wird, die
> Tabellen also reale Daten enthalten, ist dieser Datenverlust natuerlich
> nicht akzeptabel. Ich habe mir bisher geholfen, die Daten von Hand in
> eine temporaere Tabelle zu verschieben, dies ist langsam aber ziemlich
> aufwendig.
> Kennt jemand von Euch vielleicht ein kleines Prograemmchen, mit dem ich
> die Tabellen umstrukturieren kann, ohne das die Daten verloren gehen?
> Ich koennte dies zwar selbst programmieren, aber warum das Rad neu
> erfinden...
>
> Gruss, Christian
--
Dirk Haenelt DG1HTK@DB0TUD.#SAX.DEU.EU
ETI, Grundlagen, TU-DRESDEN Tel./Fax: +49 351 4635354
dh...@eeisz1.et.tu-dresden.de http://eeipe1.et.tu-dresden.de
An Christian Hempe:
Ich kenne Interbase auch nicht und nachdem,
was Du geschrieben hast, will ich Interbase auch gar nicht kennenlernen.
Selbst bei einem Hinzufuegen von Feldern in eine
existierende Tabelle werden die Daten geloescht? Uff...
Gibt es da nicht vielleicht ein Parameter, mit dem man das
einstellen kann?
Oder gibt es eine Replizierungsfunktion, mit der online
Daten in 2 getrennten DBs gehalten werden und bei
Aenderung einer Seite wird der letzte Stand zurueckgespielt...
Wenn nicht, dann klopp das Teil wirklich in die Tonne!
--
Gruss Ruediger Tams
Dirk Haenelt schrieb: