Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Daten innerhalb Datenbank kopieren(sichern) und wiederherstellen (https://www.delphipraxis.net/199499-daten-innerhalb-datenbank-kopieren-sichern-und-wiederherstellen.html)

Mario61 27. Jan 2019 13:03

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

Delphi.Narium 27. Jan 2019 13:58

AW: Daten innerhalb Datenbank kopieren(sichern) und wiederherstellen
 
https://stackoverflow.com/questions/...-in-sql-server
Bei Google suchenupdate select

TigerLilly 27. Jan 2019 20:09

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.

hoika 28. Jan 2019 04:12

AW: Daten innerhalb Datenbank kopieren(sichern) und wiederherstellen
 
Hallo,
hat das Feld Dat einen Index?

Jumpy 28. Jan 2019 10:03

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.

jobo 28. Jan 2019 10:32

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 02:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz