Здравствуйте. Помогите сделать экспорт и сохранение, и соответственно восстановлению таблиц
БД на MySQL. Предполагаю, что он должен быть. Или подскажите набор команд.
Спасибо.
Модератор: Модераторы
procedure dump(dumpname: string; showmsg: boolean);
var
ap:tprocess;
dpath:string;
begin
dpath:=setdirseparators(extractfilepath(paramstr(0))+'bdump\');
if not directoryexists(dpath) then createdir(dpath);
ap:=tprocess.create(nil);
ap.Options:=ap.Options+[powaitonexit, poUsePipes];
ap.ShowWindow:=swoHide;
ap.CurrentDirectory:=extractfilepath(paramstr(0));
ap.CommandLine:='mysqldump -u'+setup.getsqluser+' -p'+setup.getsqlpass+' -P'+inttostr(setup.getsqlport)+' -h'+setup.getsqlsrv+' '+setup.getsqlbase+' --result-file='+dumpname;
try
ap.Execute;
if showmsg then application.MessageBox(pchar('Резервная копия базы данных создана. '+'"'+dumpname+'"'), 'Информация',MB_OK+MB_ICONinformation);
finally
ap.free;
end;
end;
Снег Север писал(а):Утилита HeidiSQL
WAYFARER писал(а):https://habrahabr.ru/post/105954/
function TDM.SaveDataBase: Boolean;
var S, SDir: String;
TDir: WideString;
prc: String;
ParamString: String;
P: TProcessUTF8;
i: Integer;
begin
Result := False;
S := ParamStr(0); // Путь к программе
SDir := ExtractFilePath(S);
TDir := Utf8ToAnsi(NewArchiveName(SDir + CDirArchiveData + '\'));
if TDir = '' then Exit;
if not ForceDirectories(TDir) then Exit;
S := con.DatabaseName;
ParamString := Format(' -uroot -hlocalhost %s --result-file="%s%s.sql"', [S, TDir, S]) + #0;
prc := 'C:\Program Files\MySQL\MySQL Workbench 5.2 CE\mysqldump.exe';
S := prc + ParamString;
P := TProcessUTF8.Create(nil);
P.CommandLine := prc + ParamString;
P.Options := P.Options + [poWaitOnExit, poNoConsole];
P.Execute;
Result := P.ExitStatus = 0;
P.Free;
end;
function TDM.LoadDataBase(const ArchName: String): Boolean;
var S: String;
ParamString: String;
H: HINST;
L: TStringList;
begin
// Восстановить из архива
S := UTF8ToCP1251(PathToArchive + ArchName + '\');
ParamString := Format('cmd.exe /c mysql -uroot -hlocalhost %s<"%s%s.sql"', [con.DatabaseName, S, con.DatabaseName]);
L := TStringList.Create;
L.Add('chcp 1251 > nul');
L.Add(ParamString);
L.Add('set "str1=%~dp0"');
L.Add('set "str2=rest.bat"');
L.Add('set "str4=%str1%%str2%"');
L.Add('del %str4%');
L.SaveToFile(PathToArchive + 'rest.bat');
L.Free;
con.Connected := False;
ParamString := PathToArchive + 'rest.bat';
H := ShellExecute(0, nil, pChar(ParamString), nil, nil, SW_SHOW);
while FileExistsUTF8(ParamString) do;
con.Connected := True;
DeleteFileUTF8(ParamString);
Result := H >= 40;
end;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 76