![]() |
Datenbank: SQLite • Version: 3 • Zugriff über: FireDAC
SQLite Dump mit FireDAC
Hallo Zusammen!
Kann es sein, dass es mit FireDAC nicht möglich ist einen Dump einer SQLite Datenbank in eine Textdatei zu machen? Muss man hierfür das sqlite3 Commandlinetool benutzen? Finde ich es nur nicht oder gibt es kein TFDDump oder sowas? Mavarik |
AW: SQLite Dump mit FireDAC
Das Problem ist, dass leider nicht das DBMS den DUMP generiert, sondern die Client-Komponente.
Da müsste also TFDDump alle möglichen DBMS und deren Besonderheiten mit sich rumschleppen, um einen korrekten SQL-Dump generieren zu können. Drum gibt es vielleicht auch keine Komponente dafür? |
AW: SQLite Dump mit FireDAC
Zitat:
Es könnte ja über den Phy.Sqlite.Driver gehen... Kann ich den das Dump Kommando nativ an die SQLite.Dll senden? |
AW: SQLite Dump mit FireDAC
Zitat:
Schau mal hier of SO, vielleicht brauchbar für Deine Zwecke: ![]() 1.Antwort Zitat:
|
AW: SQLite Dump mit FireDAC
Zitat:
Ich möchte innerhalb meiner Software für den Fall das der Check einen Fehler meldet, einfach "nur" die Datenbank per Dump in einen Stream / TStringlist exportieren um danach eine neue Datenbank mit diesen Informationen zu füttern. |
AW: SQLite Dump mit FireDAC
Du könntest dir via SQlite-Api eine Dump-Funktion bauen.
Dazu: 1. Schritt: Tabellen analysieren und entsprechende Create-Statements bauen -> ab in die textdatei damit 2. Schritt: Aus den Daten entsprechende Insert-Statemnts bauen -> ab in die Textdatei damit feddich is der Dump. |
AW: SQLite Dump mit FireDAC
Zitat:
|
AW: SQLite Dump mit FireDAC
Wenn die Datei schon zerbröselt ist (physikalisch), wirst du da ganz schlechte Karten haben.
Du kannst natürlich versuchen, die Datei als ganz normale Binär-Datei zu handhaben und das ganze selbst zu analysieren und versuchen zu retten was zu retten ist. Das Dateiformat ist ![]() beschrieben. Aber ob der Aufwand das ganze wert ist, steht auf einem anderen Blatt. Ich persönlich würde, bevor es passiert, lieber eine autom. Backup-Funktion einbauen (siehe Backup-Extension von SQlite). |
AW: SQLite Dump mit FireDAC
Zitat:
Oder auf einen Stick den der User erst einlegen muss? |
AW: SQLite Dump mit FireDAC
Zitat:
Wohin willst du den den Dump machen ? Auf die gleiche defekte externe USB-Platte ? oder auf einen Stick den der User erst einlegen muss ? </IRONIE> Sorry. Wenn die ganze Platte geschrottet ist, brauchst du keinen Dump mehr, denn dann hast du erstmal das Problem überhaupt auf die Platte zugreifen zu können. Wohin man ein Backup spielt, ist davon abhängig, welche Gegebenheiten man hat. Ist ein Netzwerk (evtl. mit Server) vorhanden ? ist eine Internetverbindung vorhanden ? Welche Platten sind vorhanden ? Gibt es einen CD-/DVD-Brenner ? Gibt es einen Streamer ? Es ist auch Abhängig für welche Zielgruppe dein Projekt ist (eher privater Nutzer oder Firma). Ich versuch hier lediglich dir eine Alternative auf zu zeigen, so das sich das Problem einer Reparatur garnicht erst stellt. :) |
AW: SQLite Dump mit FireDAC
Zitat:
Falls es da wirklich zu "Bröselerscheinungen" kommen sollte, wäre es an der Zeit die Qualität der eingesetzten Hard und Software zu hinterfragen. Von den og bin ich es gewohnt, daß sie über kurz oder lang Ausfallerscheinungen zeigen/zeigten. "Richtige DBMS" sind da durchaus zuverlässiger, Es sei denn sie befinden sich auf einer lokalen Festplatte, mit einem Benutzer vor der Tastatur, der immer noch ein Anhänger des BigRedKnob ist. Gruß K-H |
AW: SQLite Dump mit FireDAC
Zitat:
Jede Filebasierte Datenbank hat jedoch das Problem, das Zugriffe nicht richtig serialisiert werden können. Welcher User macht schon Datensicherungen? Wenn ich also mit meiner Wechselfestplatte immer zwischen zu Hause und meinen Büro pendele, kann es mal zu einen Lesefehler kommen... Wenn dann dadurch die ganze Datenbank nicht mehr erreichbar ist - ist das schlecht... Es soll - wenn überhaupt nur der Datensatz defekt sein, der auch in dem Sektor gespeichert wurde... Bei einer Bin-Datei kann ich einfach durch seeken...
Delphi-Quellcode:
Oder ich schreibe an jeden Record Anfang ein Magic - welches ich in einer zerstörten Datei finden kann...
for i:=0 to Sizeof(Datei) div RecordSize do
begin try seek(I*RecordSize); read... writeNewDB; except RecordIgnorieren end; end; Ich wollte jetzt aber nicht das Dateiformat von SQLite nach programmieren... Mavarik 8-) Ich ziehe die Frage hiermit zurück... :stupid: |
AW: SQLite Dump mit FireDAC
Ist bei den kleineren Dingern DBMS nicht eh jede Daenbank oder gar Tabelle eine eigene Datei?
Da kannst du doch auch im Programm regelmäßig ein Backup machen, indem die die Datenbank oder die einzelnen Tabellen klonst. Und bei Problemen eine ältere Version zurück spiels. ![]() Modernere DBMS arbeiten mit Transaktionen, wo änderungen erstmal in ein transaktionslog kommen, dann wird dieses Log in die Hauptdatei übernommen und erst wenn fertig, dann wird das Log gelöscht. Wenn man als bei Schreibvorgängen was kaputt macht (RoterKnopf, SteckerZiehn usw.), dann gibt es immer mindestens einen konsitenten Zustand und das DBMS kann abgebrochen Schreibforgänge wiederholen (reparieren), bzw. maximal die allerletzte Transaktion könnte verschwinden, wenn sie noch nicht vollständig gespeichert wurde. (Fehler am Datenträger, bzw. Änderungen während das DBMS offline war, mal ausgeschlossen) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 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 by Thomas Breitkreuz