![]() |
Datenbank: MySQL • Zugriff über: MySQL direct (Delphi)
per MySQL direct komplette Datenbank lesen und speichern?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo kan ich per MySQL Direct die komplette Datenbank exportiren/denn inhalt igendwie Speichern?
Ich kann schon eine Verbindung aufbauen. Hier mein Codeansatz:
Delphi-Quellcode:
Damitt sich die Buchstaben "von selbst tippen"
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdFTP, StdCtrls, ComCtrls, inifiles, umysqlvio, uMysqlCT, uMysqlClient, uMysqlHelpers; {$I mysqlinc.inc} type TForm1 = class(TForm) IdFTP1: TIdFTP; TrackBar1: TTrackBar; Button1: TButton; Memo1: TMemo; hostname: TEdit; port: TEdit; username: TEdit; password: TEdit; Button2: TButton; Button3: TButton; mysqlhost: TEdit; mysqlport: TEdit; mysqlusername: TEdit; mysqlpassword: TEdit; mysqldatenbankname: TEdit; Label1: TLabel; Label2: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private FMysql: TMysqlClient; FResult: TMysqlResult; { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} var log, sett: TIniFile; Present: TDateTime; Year, Month, Day, Hour, Min, Sec, MSec: Word;
Delphi-Quellcode:
Kleine Spielerei, Fenster Transparent machen
procedure dos(Eingabe: String; sleeper: integer);
var I:Integer; const U = #13 + #10; begin for I:=1 to Length(Eingabe) do begin form1.Memo1.Text:=form1.Memo1.Text+Eingabe[I]; form1.Memo1.Refresh; Sleep(sleeper) end; form1.Memo1.Text:=form1.Memo1.Text + u; end;
Delphi-Quellcode:
Verbindung zur MySQL Datenbank;
procedure TForm1.Button1Click(Sender: TObject);
var trans: integer; begin Present:= Now; DecodeDate(Present, Year, Month, Day); DecodeTime(Present, Hour, Min, Sec, MSec); trans:= form1.TrackBar1.Position * 2; trans:= trans div 5; log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), '>>> Ändere Programmtransparentz auf: '+ inttostr(trans) + '%'); alphablendvalue:=form1.TrackBar1.Position; Alphablend:=true; end;
Delphi-Quellcode:
Verbinde zum FTP-Server (Soll ja mal ein Hompagebackupprogramm werden)
procedure vermysql;
begin Present:= Now; DecodeDate(Present, Year, Month, Day); DecodeTime(Present, Hour, Min, Sec, MSec); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), 'Setze MySQL-Port auf ' + form1.mysqlport.Text); dos('['+ inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec) +'] Setze MySQL-Port auf ' + form1.mysqlport.Text, 60); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), 'Verbinde zu MySQL-Host ['+form1.mysqlhost.Text+']...'); dos('['+ inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec) +'] Verbinde zu MySQL-Host ['+form1.mysqlhost.Text+']...', 60); form1.FMysql.Host := form1.mysqlhost.Text; form1.FMysql.port := strtoint(form1.mysqlport.text); Present:= Now; DecodeTime(Present, Hour, Min, Sec, MSec); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), 'Sende MySQL-Username ['+ form1.mysqlusername.Text +']'); dos('['+ inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec) +'] Sende MySQL-Username ['+ form1.mysqlusername.Text +']...', 60); form1.FMysql.user := form1.mysqlusername.Text; Present:= Now; DecodeTime(Present, Hour, Min, Sec, MSec); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), 'Sende MySQL-Username ['+ form1.mysqlpassword.Text +']'); dos('['+ inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec) +'] Sende MySQL-Password ['+ form1.mysqlpassword.Text +']...', 60); form1.FMysql.password := form1.mysqlpassword.Text; form1.FMysql.UnixSocket := ''; Present:= Now; DecodeTime(Present, Hour, Min, Sec, MSec); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), 'Öffne MySQL-Datenbank ['+form1.mysqldatenbankname.Text+'...'); dos('['+ inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec) +'] Öffne MySQL-Datenbank ['+ form1.mysqldatenbankname.Text +'...', 60); form1.FMysql.Db := form1.mysqldatenbankname.Text; // Datenbank auf dem Server form1.FMysql.UseNamedPipe := false; form1.FMysql.UseSSL := false; form1.FMysql.Compress := true; form1.FMysql.TrySockets := false; if form1.FMysql.Connect then begin Present:= Now; DecodeDate(Present, Year, Month, Day); DecodeTime(Present, Hour, Min, Sec, MSec); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), 'Verbindung zu MySQL-Datenbank erfolgreich!'); dos('['+ inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec) +'] Verbindung zu MySQL-Datenbank erfolgreich!', 60) end else begin Present:= Now; DecodeDate(Present, Year, Month, Day); DecodeTime(Present, Hour, Min, Sec, MSec); dos('['+ inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec) +'] Verbindung zu MySQL-Datenbank felgeschlagen!', 60); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), 'Verbindung zu MySQL-Datenbank felgeschlagen!'); end; end;
Delphi-Quellcode:
Zum Conecten und speicher des Feld Inhaltes
procedure dlord;
begin form1.Show; form1.IdFTP1.Port:=strtoint(form1.port.Text); Present:= Now; DecodeDate(Present, Year, Month, Day); DecodeTime(Present, Hour, Min, Sec, MSec); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), 'Setze FTP-Port auf '+ form1.port.Text +'...'); dos('['+ inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec) +'] Setze FTP-Port auf '+ form1.port.Text +'...', 60); sleep(100); form1.IdFTP1.Username:=form1.username.Text; Present:= Now; DecodeTime(Present, Hour, Min, Sec, MSec); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), 'Übertrage FTP-Username ['+ form1.username.Text +']...'); dos('['+ inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec) +'] Übertrage FTP-Username ['+ form1.username.Text +']...', 60); sleep(100); form1.IdFTP1.Username:=form1.username.Text; Present:= Now; DecodeTime(Present, Hour, Min, Sec, MSec); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), 'Übertrage FTP-Password ['+ form1.password.Text +']...'); dos('['+ inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec) +'] Übertrage FTP-Password ['+ form1.password.Text +']...', 60); sleep(100); form1.IdFTP1.Password:=form1.password.Text; Present:= Now; DecodeTime(Present, Hour, Min, Sec, MSec); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), 'Verbinde mit FTP-Host ['+ form1.hostname.Text +']...'); dos('['+ inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec) +'] Verbinde mit FTP-Host ['+ form1.hostname.Text +']...', 60); sleep(100); form1.IdFTP1.Host:=form1.hostname.Text; Present:= Now; DecodeTime(Present, Hour, Min, Sec, MSec); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), 'Warte auf FTP-Server...'); dos('['+ inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec) +'] Warte auf FTP-Server...', 60); try form1.IdFTP1.Connect; if form1.IdFTP1.Connected then begin Present:= Now; DecodeTime(Present, Hour, Min, Sec, MSec); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), 'FTP-Verbindung Hergestellt.'); dos('['+ inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec) +'] FTP-Verbindung Hergestellt.', 60); end; except Present:= Now; DecodeTime(Present, Hour, Min, Sec, MSec); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), 'FTP-Verbindung konnte nicht Hergestellt werdern.'); dos('['+ inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec) +'] FTP-Verbindung konnte nicht Hergestellt werdern.', 60); end; end;
Delphi-Quellcode:
Zum Disconnecten
procedure TForm1.Button2Click(Sender: TObject);
begin dlord; vermysql; sett.WriteString('FTP', 'Hostname', form1.hostname.Text); sett.WriteString('FTP', 'Port', form1.port.Text); sett.WriteString('FTP', 'Username', form1.username.Text); sett.WriteString('FTP', 'Password', form1.password.Text); sett.WriteString('MySQL', 'Hostname', form1.mysqlhost.Text); sett.WriteString('MySQL', 'Port', form1.mysqlport.Text); sett.WriteString('MySQL', 'Username', form1.mysqlusername.Text); sett.WriteString('MySQL', 'Password', form1.mysqlpassword.Text); sett.WriteString('MySQL', 'Datenbankname', form1.mysqldatenbankname.Text); form1.Button2.Enabled:= false; form1.Button3.Enabled:= true; end;
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
begin Present:= Now; DecodeDate(Present, Year, Month, Day); DecodeTime(Present, Hour, Min, Sec, MSec); dos('['+ inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec) +'] Trenne Verbindung...', 60); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), 'Trenne Verbindung...'); if FMysql.Connected then FMysql.close; if form1.IdFTP1.Connected then form1.IdFTP1.Disconnect; Present:= Now; DecodeTime(Present, Hour, Min, Sec, MSec); dos('['+ inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec) +'] Verbindung getrennt!', 60); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), 'Verbindung getrennt!'); form1.Button3.Enabled:= false; form1.Button2.Enabled:= true; end; Lesen der Voreinstellungen der settings.ini
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin FMysql := TMysqlClient.create; sett:= TiniFile.Create(ExtractFilePath(ParamStr(0))+ 'settings.ini'); log:= TiniFile.Create(ExtractFilePath(ParamStr(0))+ 'log.txt'); Present:= Now; DecodeDate(Present, Year, Month, Day); DecodeTime(Present, Hour, Min, Sec, MSec); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), '>>> Programmstart'); form1.hostname.Text:= sett.ReadString('FTP', 'Hostname', 'FTP-Hostname'); form1.port.Text:= sett.ReadString('FTP', 'Port', 'FTP-Port'); form1.username.Text:= sett.ReadString('FTP', 'Username', 'FTP-Username'); form1.password.Text:= sett.ReadString('FTP', 'Password', 'FTP-Password'); form1.mysqlhost.Text:= sett.ReadString('MySQL', 'Hostname', 'MySQL-Hostname'); form1.mysqlport.Text:= sett.ReadString('MySQL', 'Port', 'MySQL-Port'); form1.mysqlusername.Text:= sett.ReadString('MySQL', 'Username', 'MySQL-Username'); form1.mysqlpassword.Text:= sett.ReadString('MySQL', 'Password', 'MySQL-Password'); form1.mysqldatenbankname.Text:= sett.ReadString('MySQL', 'Datenbankname', 'MySQL-Datenbankname'); end;
Delphi-Quellcode:
Dass funktionirt ja auch so weit ich weis nur nicht weiter mit dem Backup! :(
procedure TForm1.FormDestroy(Sender: TObject);
begin Present:= Now; DecodeDate(Present, Year, Month, Day); DecodeTime(Present, Hour, Min, Sec, MSec); log.WriteString(inttostr(day)+'.'+inttostr(month)+'.'+inttostr(Year), inttostr(hour) +':'+ inttostr(min) +':'+ inttostr(sec), '>>> Programmende'); FMysql.Free; if FResult<>nil then FResult.free; end; end. |
Re: per MySQL direct komplette Datenbank lesen und speichern
Hallo Maximilian,
je nachdem, ob du eine Datenbank als Ganzes (mysqldump, mysqlhotcopy) oder alle Tabellen einzeln (LOCK TABLES; SELECT INTO OUTFILE) sichern möchtest, musst du anders vorgehen. Lies dir dazu mal das Kapitel "Database Administration :: Backup and Recovery" in der MySQL Dokumentation durch. Gute Nacht |
Re: per MySQL direct komplette Datenbank lesen und speichern
Zitat:
Aufjedenfall sollte das Bakup wieder aufspielbar sein. entweder über das Programm oder über PHPmyAdmin |
Re: per MySQL direct komplette Datenbank lesen und speichern
Noch wer da?
|
Re: per MySQL direct komplette Datenbank lesen und speichern
Ich denckemal alle tabellen eizeln da der MySQl Benutzer nicht die rechte hat eine neue Datenbank zu erstellen. sagt auf jedenfall PHPmyAdmin
Ich hab mir das etz mal durchgelesen. Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz