Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como puedo restaurar un archivo .sql a una base de datos en mysql por delphi (https://www.clubdelphi.com/foros/showthread.php?t=24358)

Shidalis 17-08-2005 20:43:23

como puedo restaurar un archivo .sql a una base de datos en mysql por delphi
 
Saludos a todos
como puedo restaurar un archivo .sql a una base de datos en mysql por delphi

JerS 17-08-2005 21:32:32

Mira muchachita ya te explique como se hacia ;) jijijijijiji

jmariano 17-08-2005 21:36:07

Saludos!

Hay varias formas dependiendo de cómo te estés conectando a la base de datos, pero consistiría en cargar el archivo .sql y pasárselo a un componente descendiente de "TDataSet" que admita SQL (como TQuery, TSQLQuery, TADOQuery, etc.).

Por ejemplo, si conectas a la base de datos mediante DBExpress y utilizaras TSQLQuery:

Código Delphi [-]
  SQLQuery.Close;
  SQLQuery.SQL.LoadFromFile('Prueba.sql');
  SQLQuery.Prepared := True;
  SQLQuery.Open;

Chao!

Shidalis 17-08-2005 22:44:53

Gracias por tu respuesta pero de esa manera no me funciona.
Lo que yo necesito es que comando puedo utilizar para enviar un respaldo de una base de datos d mysql que esta en un archivo .sql a otra base de datos tambien en sql.
Ya yo hice el archivo .bat que contiene la sentencia para migrar la informacion el archivo .bat contiene lo siguiente:

Código:

c:\mysql\bin\mysql bdsat2 < C:\RespaldoInicial.sql
pero necesito el comando para ejecutar ese .bat

jmariano 18-08-2005 00:05:23

Para ejecutar un .bat o cualquier proceso en Delphi puedes usar la función "WinExec" pero me parece que no te estoy entendiendo bien... Si lo que preguntas es que comando has de ejecutar para hacer backup o restaurar una base de datos MySQL visita la siguiente direccion: http://www.desarrolloweb.com/articul....php?manual=34
(En dicha Web te hablan del comando "mysqldump" para hacer backup y de como restaurar usando el comando "mysql", para ejecutar ambos comandos con sus parámetros desde Delphi tendras que usar la función "WinExec" o podrías probar también con "ShellExecute" o "CreateProcess")

m@kio 18-08-2005 00:53:59

Yo hize lo sig. para restaurar una BD SQL
 
Código Delphi [-]
  procedure EjecutarPrograma(rutaPrograma,
     parametros: string; esperar: boolean);
   var
    salida: DWord;
    punteroInfo: PShellExecuteInfo;
    infoEjecucion: TShellExecuteInfo;
   begin
    with infoEjecucion do
    begin
     cbSize := SizeOf(infoEjecucion);
     fMask := SEE_MASK_NOCLOSEPROCESS;
     wnd := GetActiveWindow;
     lpVerb := nil;
     lpFile := PChar(rutaPrograma);
     lpParameters := Pchar(parametros + #0);
     lpDirectory := nil;
     nShow := SW_NORMAL;
     hInstApp := 0;
    end;
    punteroInfo:= @infoEjecucion;
    ShellExecuteEx(punteroInfo);
    if esperar then
     repeat
      salida := WaitForSingleObject(infoEjecucion.hProcess, 500);
      Application.ProcessMessages;
     until (salida <> WAIT_TIMEOUT);
   end;
  
  procedure TForm1.Button1Click(Sender: TObject);
  begin
   EjecutarPrograma('osql','-b -U sa -P -i "'+ExtractFilePath(application.ExeName)+'EsthelDB.sql"',true);
  end;

Donde se manda llamar EjecutarPrograma nada mas es k pongas el comando para ejecutar querys en MySQL, pero creo que esto te puede servir.

Si tienes alguna duda, pues lo comentas y veremos k se puede hacer

Caro 18-08-2005 15:32:42

Hola amigos,

Tengo un problema amigo m@kio, me sale que no esta declarado el identificador PShellExecuteInfo y todos los demas que no los encuentra, la verdad no se que libreria añadir en el uses lo busque pero no lo encuentro, siempre tengo ese problema con algunos programas de los que no identifica los tipos y no se donde encontar a que librerias corresponden.

No se sobre el api de windows supongo que es de ahi las funciones que utilizas, no entiendo casi nada sobre la funcion EjecutarPrograma, por favor si me pudieras dar una pequeña explicación si no es mucha molestia o decirme donde puedo encontrar información para entender tu programa.

Muchas Gracias de por adelantado

Que tengan buen dia amigos

Shidalis 18-08-2005 17:54:33

Amigo Caro debes agregar ShellApi para que reconozca las funciones

Shidalis 18-08-2005 21:24:14

Con la ayuda de todos ustedes me funciono de esta manera:

Código:


procedure CrearArchivoBat(rutArchivo,Contenido: string);
var

  temp: TStrings;
begin
  temp := TStringList.Create;
  try
        temp.Add(Contenido);
        temp.SaveToFile(rutArchivo);
  finally
        temp.Free;
  end;
end;
 
procedure TForm_Menu.respaldarClick(Sender: TObject);
begin
  CrearArchivoBat(ExtractFilePath(Application.ExeName)+'Respaldos_SAT\RespaldoBDSAT.bat', 'c:\mysql\bin\mysqldump -uroot -d bdsat > C:\Archiv~1\Klariu~2\SAT\Respaldo_BDSAT_Vacia.sql');  //Este procedimiento contiene la ruta donde se guardara el archivo.bat y el otro parametro es lo que va a contener el archivo.bat
  shellexecute(Handle, 'open','E:\Hidalis\proyecto SAT\Respaldos_SAT\RespaldoBDSAT.bat',nil,nil,SW_SHOWNORMAL);
//  winexec('E:\Hidalis\proyecto SAT\Respaldos_SAT\RespaldoBDSAT.bat',SW_SHOWNORMAL); el winexec tambien funciona como el shellexecute, lo coloque para supieran las dos formas de hacerlo.
end;
 
procedure TForm_Menu.restaurtarClick(Sender: TObject);
begin
  CrearArchivoBat(ExtractFilePath(Application.ExeName)+'Respaldos_SAT\RestaurarBDSAT.bat','c:\mysql\bin\mysql bdsat2 < C:\Archiv~1\Klariu~2\SAT\Respaldo_BDSAT_Vacia.sql');
  winexec('E:\Hidalis\proyecto SAT\Respaldos_SAT\RestaurarBDSAT.bat',SW_SHOWNORMAL);
  //EL COMANDO SHELLEXECUTE TAMBIEN FUNCIONA EN ESTA PARTE
end;

Muchas gracias por su si no entienden el codigo pregunten por favor


La franja horaria es GMT +2. Ahora son las 07:48:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi