Hola, explicaré un poco mis dudas aver si alguien puede darme alguna pista.
El programa comienza dandole valores a los parametros para hacer la llamada a mysqldump. En principio para restaurar sería exatamente lo mismo.
Código Delphi
[-]
char *user="root";
char *password="root";
AnsiString nombrefichero=Edit1->Text; char *database="basedatos";
AnsiString outputdir="C:\\";
time_t t = time(NULL);
struct tm *tmp = localtime(&t);
char fecha[9];
strftime(fecha, sizeof(fecha), "%d%m%Y", tmp);
char outputfile[MAX_PATH];
char args[MAX_PATH]; /* Calculamos el nombre del archivo de salida */
sprintf(outputfile, "%s\\%s_%s.sql",outputdir, nombrefichero, fecha);
Lo que si cambiaría serian el calculo de parametros y la llamada a ShellExecute. En este caso utilizo mysqldump.exe porque es para respaldar la base de datos.
Pues bien, para restaurar la base datos, en vez de mysqldump se usa mysql simplemente.
Lo que no entiendo de los parametros para respaldar la base de datos es el -r que resalto. Así si hace bien el respaldo.
Sin embargo, no sé que poner para poder hacer la restauracion de la base de datos. He probado muchas formas y el resultado es que es como si no hiciera nada.
Código Delphi
[-]
/* Calculamos los parámetros */
sprintf(args, "-u%s -p%s %s -r %s", user, password, database, outputfile);
/* Hacemos el respaldo */
ShellExecute( 0,
"open",
"C:\\Program Files (x86)\\MySQL\\MySQL Server 5.5\\bin\\mysqldump.exe",
args,
"",
SW_HIDE);
}
La sintaxis en mysql para hacer el respaldo es esta:
Código SQL
[-]mysqldump -u root -p nombre_base_de_datos > fichero.sql
Y para restaurar la base de datos es esta:
Código SQL
[-]mysql -u root -p nombre_base_de_datos < fichero.sql
Si le ejecuto por ventana de comandos, si sale bien, el caso es incluirlas en Builder c++ con ShellExecute. Pero la que me falta por incluir es la de restaurar.
Espero que me entendais un poco mejor. Gracias y un saludo a todos.