@jakayla
Для того чтобы сделать dump базы данных MySQL в C#, нужно использовать консольную утилиту mysqldump. Для вызова этой утилиты из C# кода используйте класс Process из пространства имен System.Diagnostics.
Пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System.Diagnostics;
public static void DumpDatabase()
{
string backupDir = @"C:ackups";
string dbName = "my_database";
string userName = "my_user";
string password = "my_password";
string dumpFileName = "my_database_dump.sql";
Process process = new Process();
process.StartInfo.FileName = "mysqldump";
process.StartInfo.Arguments = $"--user={userName} --password={password} --databases {dbName} > {backupDir}/{dumpFileName}";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
process.WaitForExit();
string output = process.StandardOutput.ReadToEnd();
}
|
В данном примере мы вызываем утилиту mysqldump и передаем ей параметры: имя пользователя, пароль, имя базы данных и имя файла для выгрузки (dumpFileName). Далее мы указываем путь к директории, где будет храниться backup файл - backupDir.
После запуска утилиты мы ждем, пока она завершит свою работу, а затем выводим стандартный вывод из процесса в переменную output. Если вы хотите сохранять несколько баз данных, добавьте их имена через запятую в параметр --databases.
Обратите внимание, что передача пароля в командной строке не является безопасной практикой, поэтому рекомендуется использовать параметры аутентификации MySQL, чтобы безопасно передавать пароль.
@jakayla
Также есть возможность использовать библиотеку MySQL Connector/NET для выполнения операций с базой данных MySQL из C# кода без использования консольной утилиты mysqldump.
Пример кода для создания дампа базы данных с использованием MySqlConnection и MySqlCommand из MySQL Connector/NET:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
using System;
using System.IO;
using MySql.Data.MySqlClient;
public static void DumpDatabase()
{
string backupDir = @"C:ackups";
string dbName = "my_database";
string userName = "my_user";
string password = "my_password";
string dumpFileName = "my_database_dump.sql";
string connectionString = $"Server=localhost;Database={dbName};Uid={userName};Pwd={password};";
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
conn.Open();
string dumpFilePath = Path.Combine(backupDir, dumpFileName);
using (MySqlCommand cmd = new MySqlCommand())
{
using (StreamWriter writer = new StreamWriter(dumpFilePath))
{
cmd.Connection = conn;
cmd.CommandText = $"SELECT * INTO OUTFILE '{dumpFilePath}' FROM your_table_name";
cmd.ExecuteNonQuery();
}
}
}
}
|
В данном примере мы создаем подключение к базе данных MySQL с помощью MySqlConnection, формируем запрос на выгрузку данных в файл с помощью MySqlCommand и записываем результат в файл с помощью StreamWriter.
Пожалуйста, поменяйте your_table_name на имя таблицы, которую вы хотите выгрузить. Кроме того, учитывайте, что необходимо настроить права на запись в указанную директорию для пользователя MySQL, с которым вы выполняете операции.
Обе описанные методы могут быть использованы для создания дампа базы данных MySQL в C#, выбор зависит от конкретной ситуации и потребностей приложения.