Как делать dump базы данных средствами c# в mysql

Пользователь

от jakayla , в категории: SQL , 2 года назад

Как делать dump базы данных средствами c# в mysql

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от magali , 2 года назад

@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, чтобы безопасно передавать пароль.

Пользователь

от deion , 6 месяцев назад

@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#, выбор зависит от конкретной ситуации и потребностей приложения.