Newsgroup: it.comp.lang.delphi
Titolo: esecuzione mysqldump da shell con parametri

Ho provato a lanciare il mysqldump da shell usando 2 tecniche differenti 
ma il risultato è sempre negativo posto il codice:
var percorso: string;
		esegui: TCustomFileRun;
begin
	percorso := ExtractFilePath(ParamStr(0));
//prima prova ExecuteFile è una function trovato in FmxUtils negli 
esempi di delphi
	ExecuteFile('c:\mysql\bin\mysqldump --opt --user=root --password= 
testbackup > ' + percorso + 'configurazione\backupfile.sql','','',1);
   ExecuteFile('mysqldump','--opt --user=root --password= testbackup > ' 
+ percorso + 'configurazione\backupfile.sql',percorso,1);
//poi ho tentato quest'altra strada
	esegui := TCustomFileRun.Create(Form1);
	esegui.FileName:='c:\mysql\bin\mysqldump.exe --opt --user=root 
--password= testbackup > ' + percorso + 'configurazione\backupfile.sql';
	esegui.Hint:='open';
   // mysqldump --opt --user=root --password= testbackup > 
path_to_destin\filetosaveto.sql
   //ok
end;
la cosa strana è con dà nessun errore visibile se non che proprio il 
file che dovrebbe creare non esiste.
naturalmente se eseguo il comando da riga di comando questo fà quanto deve
Lumi ????
Omega

Non conosco la funzione ExecuteFile che hai trovato, comunque, credo di
capire che non hai impostato nessuna password per l'utente 'root'.
Se così è, prova a togliere del tutto '--password=' non vorrei che
prenda come password il nome del database che segue con ovvie
conseguenze.

 
Cavolo ci speravo fosse solo questo ma niente. In ogni caso cosa 
useresti per lanciarlo da delphi ?
Omega

 Lumi ????
la butto lì, ha provato a vedere se a run-time, la variabile "percorso" 
contiene effettivamente il percorso che tu vuoi?
Ciao
Gianni


Fatto anche questo nessun risultato ho fatto però un'altro tentativo 
sempre con i due metodi e per lo meno il cmd.exe viene eseguito ma il 
mysqldump non fà cio che deve. ecco il codice:
var percorso: string;
	esegui: TCustomFileRun;
begin
	percorso := ExtractFilePath(ParamStr(0));
	//ExecuteFile('c:\mysql\bin\mysqldump --opt --user=root  testbackup > ' 
+ percorso + 'configurazione\backupfile.sql','','',1);
   //ExecuteFile('mysqldump','--opt --user=root  testbackup > ' + 
percorso + 'configurazione\backupfile.sql',percorso,1);
//questo sotto fa apparire il prompt di dos
   ExecuteFile('cmd.exe','help','c:\',SW_SHOW);//il parametro help non 
viene eseguito
	esegui := TCustomFileRun.Create(Form1);
	//esegui.FileName:='c:\mysql\bin\mysqldump.exe --opt --user=root 
testbackup > ' + percorso + 'configurazione\backupfile.sql';
   esegui.FileName := 'cmd.exe';
   esegui.Parameters := 'help';//il parametro help non viene eseguito
	esegui.Hint := 'open';
//e questo anche
   esegui.Execute;

Io preparerei un file batch (bck.bat) contenente il necessario e
lancerei costui in esecuzione.  Se non sono stato chiaro a sufficienza
dimmelo che ti preparo un esempio.
Giovanni Caramia


No no chiarissimo tra l'altro da qualche parte dovrei pure avere un 
esempio di batch proprio con mysqldump..... va bhe se lo hai a portato 
di mano postalo faccio sicuramente prima.
Grazie della dispo
Omega

Predisponi con notepad un file batch (ad esempio: dbbck.bat) contenente
questa riga:
mysqldump  %1 %2 %3 %4 %5 %6
dopo di che manderai in esecuzione la stringa che ti comporrai nel
seguente modo:
'dbbck.bat' + ' ' + '-uuserid' + ' ' + '-ppassword' + ' ' +
'--extended-insert' + ' ' + '-hserver' + ' ' + 'database' + ' ' +
'>path+nomefile.sql'
ovvero il batch riceverà come parametri rispettivamente userid,
password, host .... un parametro per ogni %x inserito.
Tieni presente che i parametri vengono individuati dai blank intermedi.
Pertanto fa attenzione agli spazi vuoti che ti ho indicato.
In particolar modo l'ultimo parametro non deve avere spazi tra il segno
'>' ed il path+nomefileoutput.
se non dovessi riuscire ti posterò il codice per intero ma sono sicuro
che ce la farai.
Ciao
Giovanni Caramia

 
Grazie moltissimo dell'esempio molto chiaro (mai usato i batch così). 
Molto bene grazie ancora.
Omega