Hallo,
ich habe eine Datenbank (SQLite) jetzt möchte ich ein Update durchführen und habe dazu eine *.sql geschrieben.
Wie kann ich jetzt mit mit einem Setup (Inno Setup) die *.sql ausführen, damit das DB-Update durchgeführt wird?
Gruß
Marco812
Hallo,
ich habe eine Datenbank (SQLite) jetzt möchte ich ein Update durchführen und habe dazu eine *.sql geschrieben.
Wie kann ich jetzt mit mit einem Setup (Inno Setup) die *.sql ausführen, damit das DB-Update durchgeführt wird?
Gruß
Marco812
auch wenn ich SQLite nicht kenne...
ich gehe davon aus, dass du tabelleneinträge innerhalb einer datenbank updaten wills. Ich schreibe mir dazu auch ein file mit den update-anweisungen und führe das dann von der shell aus: "cat update.sql|psql meinedb"
wenn du einen command-line-client zu SQLite hast, sollte das ähnlich gehen.
wie gesagt, ist nur ne vermutung, da ich normalerweise in postges arbeite
"Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)
ich nehme an, dass es auch für SQLite ein Admin-Tool gibt, dort solltest du die .sql ausführen lassen können.
Hallo,
ja es gibt ein command-line program für SQLite.
Kann mir jemand sagen wie ich damit eine *.sql in eine bestehende Datenbank einfügen kann?
Gruß
Marco812
P.S.
Das ganze muss (leider) unter Windows laufen.
Hier aus Google:
http://freshmeat.net/projects/sqliteadmin/
Und aus der Webseiten-Doku von SQLite (http://www.sqlite.org/sqlite.html):
Gruss,sqlite> .help
.databases List names and files of attached databases
.dump ?TABLE? ... Dump the database in a text format
.echo ON|OFF Turn command echo on or off
.exit Exit this program
.explain ON|OFF Turn output mode suitable for EXPLAIN on or off.
.header(s) ON|OFF Turn display of headers on or off
.help Show this message
.indices TABLE Show names of all indices on TABLE
.mode MODE Set mode to one of "line(s)", "column(s)",
"insert", "list", or "html"
.mode insert TABLE Generate SQL insert statements for TABLE
.nullvalue STRING Print STRING instead of nothing for NULL data
.output FILENAME Send output to FILENAME
.output stdout Send output to the screen
.prompt MAIN CONTINUE Replace the standard prompts
.quit Exit this program
.read FILENAME Execute SQL in FILENAME
.schema ?TABLE? Show the CREATE statements
.separator STRING Change separator string for "list" mode
.show Show the current values for various settings
.tables ?PATTERN? List names of tables matching a pattern
.timeout MS Try opening locked tables for MS milliseconds
.width NUM NUM ... Set column widths for "column" mode
sqlite>
comrad
Holarse.de - Spielen unter Linux
Hi,
nur der Vollständigkeit halber ein brauchbares Tool für SQLite: http://www.orbmu2k.de/
Gruß,
Gaert
Zum Verständnis: das Lesen einer Datei geht nicht mit SQL, sondern muss mit einem speziellen Kommando der SQL-Shell ("sqlite" bei SqLite) erfolgen. Bei "sqlite" beginnen diese "Meta-Kommandos" alle mit einem Punkt.Zitat von Marco812
Mit dieser Info solltest Du in der Lage sein, die Dokumentation zu verstehen: http://www.sqlite.org/sqlite.html
Hallo,
danke für die vielen Informationen. Ich kann jetzt das update über die Kommandozeile durchführen. Allerdings wenn ich das ganze jetzt automatisieren möchte, geht es nicht. Ich habe es über eine *.bat versucht.
sqlite3.exe mydb.dat
.read update.sql
.quit
Das Problem ist wohl, das nicht auf das beenden der einzelnen Befehle gewartet wird.
Meine Überlegung war jetzt, ein kleines C++ Programm zu schreiben, damit der Benutzer die DB über einen Dialog auswählen kann. Allerdings sind mir so ein paar Sachen noch nicht klar:
1) Wie kann ich prüfen ob es sich um die richtige DB handelt?
2) Wie kann ich prüfen ob die einzelnen Befehle abgearbeitet sind?
Hat jemand evtl. etwas ähnliches Programmiert und könnte mir ein kleines Code-Beispiel geben?
Gruß
Marco812
Werfen wir doch mal nicht alles über und auf einen Haufen.
Die shell von SQLite ist ungeeignet, um diese in einer Batch-Datei zu nutzen, schließlich ist eine Shell ja interaktiv.
Schau' doch mal bitte, welche Kommandozeilenparameter die ausgeführte .exe-Datei von SQLite hat. Dort wird es sicherlich irgendwie die Möglichkeit geben, eine Verbindung zu einer Datenbank anzugeben und ein Skript, welches dann für die Datenbank abgefahren wird.
TME
Hallo,
vielen Dank für eure Hilfe, das mit dem Kommandozeilenparameter war eine gute Idee. Letztendlich habe ich aber ein kleines Programm geschrieben das optimal meiner Vorstellung angepasst ist.
Gruß
Marco812
Lesezeichen