Autor Beitrag
eur0
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: 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.


ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: 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

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 5

Windows 7, Windows 8.1
Delphi XE
BeitragVerfasst: Di 11.05.04 16:18 
Du möchtest also quasi ein fremdes Programm aus Delphi aufrufen? Kein Problem, dafür gibt es doch Suche in: Delphi-Forum, Delphi-Library SHELLEXECUTE bzw Suche in: Delphi-Forum, Delphi-Library SHELLEXECUTEEX!

(Edit: Rechtschreibung)

_________________
<< FaTaLGuiLLoTiNe >>
Rhinoceroses don't play games!
eur0 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 11.05.04 17:57 
ich habs jetzt mal so versucht *g

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 531

WinXP
D5 Ent
BeitragVerfasst: Di 11.05.04 18:51 
windows

_________________
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
raziel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: Di 11.05.04 19:52 
Zitat:
was muss ich da bei uses hinschreiben?

Zitat:
windows

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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 531

WinXP
D5 Ent
BeitragVerfasst: 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 :oops:

_________________
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
neojones
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: 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:
ausblenden 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
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Do 13.05.04 11:51 
ich habe nochmal geguckt,

das muss irgendwie an den parametern liegen also an dem stück:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Fr 14.05.04 10:20 
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: 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!