Autor |
Beitrag |
eur0
      
Beiträge: 16
|
Verfasst: Sa 08.05.04 17:27
Ich suche eine Möglichkeit eine mySQL Datenbank mittels Delphi zu sichern bzw. dann ne externe Datei auf meinen Rechner zu haben. Leider kenne ich mich mit SQL nicht so aus, habe aber ein Script gefunden womit man mittels PHP die Datenbank sichern kann.
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| <?php $host= 'localhost'; $user= 'fsohomepage'; $pass= ''; $db= 'fsohomepage_de_db';
// Befehl ausführen und in Zipfile speichern system(sprintf( 'mysqldump --opt -h %s -u %s -p%s %s | gzip > %s/' .date(dmY) . 'dump.sql.gz', $host, $user, $pass, $db, getenv('DOCUMENT_ROOT') )); echo '´Fertig'; ?> |
leider habe ich keine ahnung, wie ich das mit delphi mache und die datei in dann z.B. in den selben Ordner wie die Programm exe habe :\
Ich hoffe mir kann jemand helfen....
|
|
raziel
      
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: Sa 08.05.04 17:42
dieses script verwendet das mySQL Prog mysqldump. das is imho bei mySQL mit dabei (jedenfalls bei mir).
wo ist die datenbank überhaupt? lokal auf dem rechner oder auf nem server? server könnte schwierig werden weil die meisten server keine externen zugriffe erlauben. lokal könntest du - genauso wie das php-skript - das mySQLDump tool knechten (also praktisch nur ein frontend dazu schreiben).
raziel
//edit: zum skript fällt mir noch was ein:
wenn du das so abänderst:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| // Befehl ausführen und in Zipfile speichern system(sprintf( 'mysqldump --opt -h %s -u %s -p%s %s', $host, $user, $pass, $db )); |
müsste theoretisch der output statt in einer datei gespeichert im browser sichtbar sein und das könnte man mittels diverser http kompos in delphi reinkloppen können. allerdings hab ich keine ahnung, ob das dein provider mitmacht, dass du da programme ausführst...
_________________ JSXGraph
|
|
neojones
      
Beiträge: 1206
Erhaltene Danke: 1
|
Verfasst: Mo 10.05.04 09:07
Selbst wenn der Server externe mySQL-Zugriffe zulässt, wird mysqldump nicht funktionieren, ausser Du installierst Dir mysqldump lokal und greifst über die Server-Parameter direkt drauf zu. Die Alternative ist, das selbst von hand zu schreiben.
Mit dem Befehl
Quelltext 1:
| SHOW CREATE TABLE Tabellenname |
ermittelst Du die Create-Syntax (Kopfsatz des Dumps). Dann machst Du einen DESC TABLE und erhälst dadurch alle Feldnamen. Und dann baust Dir 2 Schleifen, die für jede Spalte und für jeden Datensatz ein INSERT INTO-Statement erstellen.
Viele Grüße,
Matthias
_________________ Ha! Es compiliert! Wir können ausliefern!
|
|
eur0 
      
Beiträge: 16
|
Verfasst: Di 11.05.04 16:14
erstmal danke für die antworten,
ich habs jetzt mal mit der datei mysqldump.exe probiert, dabei schickt man mit dos befehlen ein paar parameter an die datei und ein backup wird in dem selben ordner angelegt. mit einer *.bat datei funktioniert das ganz gut, nur habe ich keine ahnung wie ich die dos befehle / parameter mittels delphi an die datei schicke :\
inhalt der *.bat datei:
Quelltext 1: 2: 3: 4: 5: 6:
| set Server=xxx.xxx.xxx.xxx set User=xxx set PW=xxx set DB=xxx
mysqldump.exe --host=%Server% --user=%User% --password=%PW% --opt --result-file=backup.sql %DB% |
ich hoffe das einer versteht, was ich überhaupt meine *g
|
|
FaTaLGuiLLoTiNe
      
Beiträge: 200
Erhaltene Danke: 5
Windows 7, Windows 8.1
Delphi XE
|
Verfasst: Di 11.05.04 16:18
Du möchtest also quasi ein fremdes Programm aus Delphi aufrufen? Kein Problem, dafür gibt es doch SHELLEXECUTE bzw SHELLEXECUTEEX!
(Edit: Rechtschreibung)
_________________ << FaTaLGuiLLoTiNe >>
Rhinoceroses don't play games!
|
|
eur0 
      
Beiträge: 16
|
Verfasst: Di 11.05.04 16:56
bin leider nur ein leihe was das angeht, starten kann ich eine datei wie folgt: ExecuteFile:='c:\Windows\Calc.exe';
und wie übergebe ich nun die parameter?
habe folgenden thread gefunden: www.delphi-forum.de/...light=shellexecuteex
doch richtig durchsehen tue ich nicht :\
|
|
neojones
      
Beiträge: 1206
Erhaltene Danke: 1
|
Verfasst: Di 11.05.04 17:25
ShellExecute(Handle,'open', PChar(Pfad), PChar(Parameter), nil, SW_SHOWNORMAL);
Viele Grüße,
Matthias
_________________ Ha! Es compiliert! Wir können ausliefern!
|
|
eur0 
      
Beiträge: 16
|
Verfasst: Di 11.05.04 17:57
ich habs jetzt mal so versucht *g
Delphi-Quelltext 1:
| ShellExecute(Handle,'open', PChar('sichern.exe'), PChar('--host=xxx.xxx.xxx.xxx --user=euro --password=xxx --opt --result-file=backup.sql test'), nil, SW_HIDE); |
[Fehler] Unit1.pas(29): Undefinierter Bezeichner: 'ShellExecute'
was muss ich da bei uses hinschreiben?
// edit
hat sich geklärt, hab ich forum noch bissel rumgesucht, danke an alle 
|
|
UC-Chewie
      
Beiträge: 531
WinXP
D5 Ent
|
Verfasst: Di 11.05.04 18:51
windows
_________________ Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
|
|
raziel
      
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: Di 11.05.04 19:52
Zitat: | was muss ich da bei uses hinschreiben? |
nein, imho ShellApi (ich sags nur, damit nich morgen ne frage kommt, in welcher unit denn bitte shellexecute zu finden sei, weil im forum 5 verschiedene antworten zu finden sind...).
raziel
_________________ JSXGraph
|
|
UC-Chewie
      
Beiträge: 531
WinXP
D5 Ent
|
Verfasst: Di 11.05.04 21:51
Ups....
Schande über mich.
ShellExecute ist natürlich in ShellApi zu finden...
Verdammt, ich sollte wohl ins Bett gehen 
_________________ Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
|
|
neojones
      
Beiträge: 1206
Erhaltene Danke: 1
|
Verfasst: Mi 12.05.04 09:33
@UC-Chewie:
ShellExecute(Handle,'close', PChar('gotobed.exe'), PChar('--nobeer --nowine --nodrugs'), nil, SW_HIDE);
_________________ Ha! Es compiliert! Wir können ausliefern!
|
|
eur0 
      
Beiträge: 16
|
Verfasst: Mi 12.05.04 20:55
das mit dem backup funktioniert nun, jetzt wollte ich die datei wieder einspielen aber es klappt nicht :\
das is der dos befehl:
Quelltext 1:
| C:\prog>mysql --host=localhost --user=root --password=muh test < 12.05.2004-backup.sql |
funktioniert 1a
nur bei delphi will er nicht so recht, ich seh zwar das dos fenster, doch das schließt sich sofort wieder Delphi-Quelltext 1:
| ShellExecute(Handle,'open', PChar('mysql.exe'), PChar('--host='+host+' --user='+usern+' --password='+passw+' '+dbn+' < '+opendialog1.FileName+''), nil, SW_SHOW); |
ich hoffe mir kann da jemand weiter helfen
|
|
eur0 
      
Beiträge: 16
|
Verfasst: Do 13.05.04 11:51
ich habe nochmal geguckt,
das muss irgendwie an den parametern liegen also an dem stück: Delphi-Quelltext 1:
| PChar('--host='+host+' --user='+usern+' --password='+passw+' '+dbn+' < '+opendialog1.FileName+'') |
den meine firewall meldet sich an der stelle nicht, ergo will die datei auch nicht ins netz ...
|
|
neojones
      
Beiträge: 1206
Erhaltene Danke: 1
|
Verfasst: Do 13.05.04 12:22
Kleiner Tipp:
Lass Dir den String mal als ShowMessage ausgeben und tipp nen dann in die Eingabeaufforderung ein. Dann siehst nämlich die Ergebnismeldung bzw. Fehlermeldung.
Viele Grüße,
Matthias
_________________ Ha! Es compiliert! Wir können ausliefern!
|
|
eur0 
      
Beiträge: 16
|
Verfasst: Do 13.05.04 15:38
kannst du mir bisschen näher erklären, wie das funktionieren soll? also wie bekomme ich den string in ne showmessage *g
|
|
eur0 
      
Beiträge: 16
|
Verfasst: Do 13.05.04 18:47
mir is noch was anderes in den sinn gekommen, wie kann ich es hinbiegen, dass das dos fenster offen bleibt und man mal die meldung lesen kann?
der dos befehl dafür ist Pause und mein naiver versuch hat leider nicht geklappt
ShellExecute(Handle,'open', PChar('mysql.exe'), PChar('--host='+host+' --user='+usern+' --password='+passw+' '+dbn+' < '+opendialog1.FileName+''), PChar( 'Pause' ) , SW_SHOW);
mfg eur0
|
|
neojones
      
Beiträge: 1206
Erhaltene Danke: 1
|
Verfasst: Fr 14.05.04 10:20
Quelltext 1:
| ShowMessage(PChar('--host='+host+' --user='+usern+' --password='+passw+' '+dbn+' < '+opendialog1.FileName+'')); |
So gibst es aus als Message.
Viele Grüße,
Matthias
_________________ Ha! Es compiliert! Wir können ausliefern!
|
|
eur0 
      
Beiträge: 16
|
Verfasst: Sa 15.05.04 12:32
also am string selber kanns nicht liegen, den hab ich so aus der dos befehlszeile rauskopiert und die variabeln eingetragen
ich würde lieber in richtung mit der Pause "forschen", nur habe ich wie gesagt keine ahnung wie ich den befehl da noch reinfummeln kann :\
|
|
neojones
      
Beiträge: 1206
Erhaltene Danke: 1
|
Verfasst: Mo 17.05.04 09:49
Lass Dir den String mal ausgebe und überprüfe ihn dann nochmal. Ich bin mir sicher, dass da der Fehler liegt. Das mit dem Pause ist Quatsch.
Viele Grüße,
Matthias
_________________ Ha! Es compiliert! Wir können ausliefern!
|
|