VB.Net中mysql数据库的数据库备份
你可以调用mysqldump,但是你可能需要在Mysql服务器上运行你的VB.NET。
您可以读取每个表的数据并将其写入新数据库。
我会写一个存储过程,因为MySQL 5支持它们,它处理所有数据“繁重”的工作。然后,只需创建每个“晚上”调用过程的计划任务。对于后面的组件,我强烈推荐Powershell ....它很棒。
我发现最简单的方法是使用mysqldump.exe这是一个独立的应用程序。
mysqldump --host=[HOSTNAME] --user=[USER] --password=[PASSWORD] -R [DATABASE NAME] > [PATH TO BACKUP FILE]
我们有问题与备份不保存数据库的功能,但是-R开关整理这么ID建议,如果你使用你的数据库的存储过程或函数中使用它。
改为使用mysql命令来恢复创建的文件。
mysql --host=[HOSTNAME] --user=[USER] --password=[PASSWORD] [DATABASE NAME] < [PATH TO BACKUP FILE]
您可以使用MySqlBackup.NET,这是mysqldump的一个替代品。
官方网站&文档>http://mysqlbackupnet.codeplex.com
实例:
备份MySQL数据库
Dim conn As MySqlConnection = New MySqlConnection(constr)
Dim cmd As MySqlCommand = New MySqlCommand
cmd.Connection = conn
conn.Open
Dim mb As MySqlBackup = New MySqlBackup(cmd)
mb.ExportToFile("C:\backup.sql")
conn.Close
还原MySQL数据库
Dim conn As MySqlConnection = New MySqlConnection(constr)
Dim cmd As MySqlCommand = New MySqlCommand
cmd.Connection = conn
conn.Open
Dim mb As MySqlBackup = New MySqlBackup(cmd)
mb.ImportFromFile("C:\backup.sql")
conn.Close
我是这个项目的作者之一。
这就是我用来备份mysql数据。我制作了mysqldump.exe和mysql.exe的副本,并将其保存在我的LIB_PATH上,然后下面的代码将备份您的数据。您可以指定您的mysqldump.exe目录并将其分配给LIB_PATH,在参数下提供您的登录详细信息,然后指定您的输出目录,我的设置为BACKUP_DIR,并使用预格式化的Now()作为我的文件名。代码非常简单。 Goodluck
Using myProcess As New Process()
Dim newfiledb As String = BACKUPDIR_PATH & Format(Now(), "[email protected]~mm_tt").ToString & "_local.sql"
Try
myProcess.StartInfo.FileName = "mysqldump.exe"
myProcess.StartInfo.WorkingDirectory = LIB_PATH
myProcess.StartInfo.Arguments = "--host=localhost --user=username --password=yourpassword yourdatabase -r " & newfiledb
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
myProcess.Start()
myProcess.WaitForExit()
MsgBox("Backup Created ... " & vbNewLine & newfiledb)
Catch ex As Exception
MsgBox(ex.Message, vbCritical + vbOKOnly, ex.Message)
Finally
myProcess.Close()
End Try
End Using
使用此代码。 它适合我。
我有这样一个问题,然后发现这篇文章
“http://www.experts-exchange.com/Programming/Languages/.NET/Q_27155602.html”
的例子是在C#。我手动将其转换为vb.net并添加转换为'utf8'。
Imports System.Text
Public Class Form1
Dim OutputStream As System.IO.StreamWriter
Sub OnDataReceived1(ByVal Sender As Object, ByVal e As System.Diagnostics.DataReceivedEventArgs)
If e.Data IsNot Nothing Then
Dim text As String = e.Data
Dim bytes As Byte() = Encoding.Default.GetBytes(text)
text = Encoding.UTF8.GetString(bytes)
OutputStream.WriteLine(text)
End If
End Sub
Sub CreateBackup()
Dim mysqldumpPath As String = "d:\mysqldump.exe"
Dim host As String = "localhost"
Dim user As String = "root"
Dim pswd As String = "Yourpwd"
Dim dbnm As String = "BaseName"
Dim cmd As String = String.Format("-h{0} -u{1} -p{2} {3}", host, user, pswd, dbnm)
Dim filePath As String = "d:\backup\fieName.sql"
OutputStream = New System.IO.StreamWriter(filePath, False, System.Text.Encoding.UTF8)
Dim startInfo As System.Diagnostics.ProcessStartInfo = New System.Diagnostics.ProcessStartInfo()
startInfo.FileName = mysqldumpPath
startInfo.Arguments = cmd
startInfo.RedirectStandardError = True
startInfo.RedirectStandardInput = False
startInfo.RedirectStandardOutput = True
startInfo.UseShellExecute = False
startInfo.CreateNoWindow = True
startInfo.ErrorDialog = False
Dim proc As System.Diagnostics.Process = New System.Diagnostics.Process()
proc.StartInfo = startInfo
AddHandler proc.OutputDataReceived, AddressOf OnDataReceived1
proc.Start()
proc.BeginOutputReadLine()
proc.WaitForExit()
OutputStream.Flush()
OutputStream.Close()
proc.Close()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CreateBackup()
End Sub
End Class
我不断收到此错误:在System.Windows.Forms中发生未处理的异常类型'System.IO.FileLoadException'。dll 其他信息:无法加载文件或程序集“MySqlBackup,Version = 2.0.9.2,Culture = neutral,PublicKeyToken = null”或其某个依赖项。一个强命名的程序集是必需的。 (来自HRESULT的异常:0x80131044) – 2016-11-01 19:37:22