![]() |
Datenbank: sqlite-3 • Version: 7.1.4-stable • Zugriff über: Delphi 7
Daten innerhalb Datenbank kopieren(sichern) und wiederherstellen
Hallo, vielleicht kann mir ja einer einen Tip geben, ich sichere bestimmte Tabellen innerhalb der selben Datenbank mit folgemden Befehl:
// Tabellen innerhalb der selben Datenbank sichern query.SQL.Text := 'INSERT INTO TblBackup '+ 'SELECT Row1,Row2,Row3,Row4,Row5 FROM TblDaten WHERE Bedingung <> '+#39+'1'+#39; query.ExecSQL; Funktioniert wunderbar und ist super schnell, aber um das Backup (Sicherung) zurück zu spielen, ist mir das nachfolgende einfach zu lang und dauert ewig: // Tabelle Wiederherstellen query.SQL.Text := 'UPDATE TblDaten SET Row1 = (SELECT Row1 FROM TblBackup WHERE TblBackup.Dat = TblDaten.Dat)'; query.ExecSQL; query.SQL.Text := 'UPDATE TblDaten SET Row2 = (SELECT Row2 FROM TblBackup WHERE TblBackup.Dat = TblDaten.Dat)'; query.ExecSQL; query.SQL.Text := 'UPDATE TblDaten SET Row3 = (SELECT Row3 FROM TblBackup WHERE TblBackup.Dat = TblDaten.Dat)'; query.ExecSQL; ... und so weiter, das sind mehrere einzelne ExecSql, deshalb dauert das so lange, kann man das nicht mit einer einzelnen Query machen? Unter Delphi kann man ja den SQL.Text nicht unendlich lang machen... Gruß Mario |
AW: Daten innerhalb Datenbank kopieren(sichern) und wiederherstellen
|
AW: Daten innerhalb Datenbank kopieren(sichern) und wiederherstellen
Du kannst das UPDATE-SQL Statement dynamisch erzeugen. Dann hast du nur ein Update Statement auszuführen.
|
AW: Daten innerhalb Datenbank kopieren(sichern) und wiederherstellen
Hallo,
hat das Feld Dat einen Index? |
AW: Daten innerhalb Datenbank kopieren(sichern) und wiederherstellen
Oder wie wäre ein Delete der betroffenen Datensätze und dann ein Insert aus der backup-Tabelle.
|
AW: Daten innerhalb Datenbank kopieren(sichern) und wiederherstellen
Ob man das Anwenden von "Update" als Wiederherstellen bezeichnen kann, wage ich zu bezweifeln.
Das würde nur für Tabellen gelten in denen nicht gelöscht wird und nicht eingefügt wird. Ansonsten wie schon angeklungen, Leeren der Original Tabelle und neu befüülen mit Insert into <orig> select from <backup> Dabei muss natürlich beachtet werden, dass PK ID Handling, Triggerverhalten stimmig ist und referentielle constraints ggf. "beißen". |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz