Как экспортировать таблицы MySQL БД.
Модератор: Модераторы
Как экспортировать таблицы MySQL БД.
Здравствуйте. Помогите сделать экспорт и сохранение, и соответственно восстановлению таблиц
БД на MySQL. Предполагаю, что он должен быть. Или подскажите набор команд.
Спасибо.
БД на MySQL. Предполагаю, что он должен быть. Или подскажите набор команд.
Спасибо.
Самый простой вариант - использовать внешний mysqldump.
Спасибо. Буду думать в сторону обработок самого MySql. Запросами.
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Утилита HeidiSQL - http://www.heidisql.com/download.php
Очень удобная, в т.ч. для экспорта, можно сразу перенести базу с одного сервера на другой удаленно. Пользуюсь ею постоянно уже много лет.
Очень удобная, в т.ч. для экспорта, можно сразу перенести базу с одного сервера на другой удаленно. Пользуюсь ею постоянно уже много лет.
Я понял вопрос в контексте использования программирования.
выдержка из рабочего кода...
Абсолютно согласен и сам много лет использую.
ремарка: Когда, в мою бытность юным, мне был интересен проект Мангос - меня раздражало использование навиката, как рекомендуемого инструмента, поскольку ломан.
Остальные вопросы, более чем полностью, освещает
WAYFARER
[/quote]
Код: Выделить всё
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/
Остальные вопросы, более чем полностью, освещает
WAYFARER
[/quote]
Из работающей программы.
Код: Выделить всё
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;
Спасибо. Благодарю вас.
