AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten innerhalb Datenbank kopieren(sichern) und wiederherstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Daten innerhalb Datenbank kopieren(sichern) und wiederherstellen

Ein Thema von Mario61 · begonnen am 27. Jan 2019 · letzter Beitrag vom 28. Jan 2019
Antwort Antwort
Mario61

Registriert seit: 10. Jan 2010
19 Beiträge
 
#1

Daten innerhalb Datenbank kopieren(sichern) und wiederherstellen

  Alt 27. Jan 2019, 14:03
Datenbank: sqlite-3 • Version: 7.1.4-stable • Zugriff über: Delphi 7
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
Gruß Mario
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#2

AW: Daten innerhalb Datenbank kopieren(sichern) und wiederherstellen

  Alt 27. Jan 2019, 14:58
https://stackoverflow.com/questions/...-in-sql-server
Bei Google suchenupdate select
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.201 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Daten innerhalb Datenbank kopieren(sichern) und wiederherstellen

  Alt 27. Jan 2019, 21:09
Du kannst das UPDATE-SQL Statement dynamisch erzeugen. Dann hast du nur ein Update Statement auszuführen.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Daten innerhalb Datenbank kopieren(sichern) und wiederherstellen

  Alt 28. Jan 2019, 05:12
Hallo,
hat das Feld Dat einen Index?
Heiko

Geändert von hoika (28. Jan 2019 um 07:42 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: Daten innerhalb Datenbank kopieren(sichern) und wiederherstellen

  Alt 28. Jan 2019, 11:03
Oder wie wäre ein Delete der betroffenen Datensätze und dann ein Insert aus der backup-Tabelle.
Ralph
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: Daten innerhalb Datenbank kopieren(sichern) und wiederherstellen

  Alt 28. Jan 2019, 11:32
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".
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:07 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