powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Резервная копия базы с помощью mysqldump. Помогите победить кодировку.
2 сообщений из 2, страница 1 из 1
Резервная копия базы с помощью mysqldump. Помогите победить кодировку.
    #38618472
Gamber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени.
Необходимо реализовать резервное копирование БД в приложении.
Проблема в том, что при задействовании утилиты mysqldump из приложения, кодировка русскоязычных символов превращается в абракадабру. Если запустить утилиту напрямую из командной строки, проблем с кодировкой нет.

Все кодировки выставляются в UTF-8. Что я все-так упускаю? Подскажите пожалуйста.

Подключение к базе:

Код: c#
1.
 string connection_string = "server=" + db_server + ";" + "userid=" + db_user + ";" + "password=" + db_pass + ";" + "database=" + db_name + ";charset=utf8";



Создание фйла в который будут записываться данные для последующего LOAD DATA

Код: c#
1.
2.
 FileStream output_file = new FileStream(output_file_location + "output.csv", FileMode.OpenOrCreate, FileAccess.Write);
                                            StreamWriter output_stream = new StreamWriter(output_file, Encoding.UTF8);



LOAD DATA в базу

Код: plsql
1.
"LOAD DATA INFILE " + "'" + csvimport_file_location + "output.csv" + "'" + " REPLACE INTO TABLE " + db_main_tablename + " FIELDS TERMINATED  BY ','" + " ENCLOSED BY '" + encolsed_symbool + "'" + " LINES TERMINATED  BY ';'";




Резеврное копирование базы

Код: c#
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.
32.
33.
34.
35.
36.
 static bool BackupMysql(string server, string db, string login, string pass)
        {

            FileStream fs = new FileStream(@"c:\backup.sql", FileMode.OpenOrCreate, FileAccess.Write);
            StreamWriter sw = new StreamWriter(fs,Encoding.UTF8);
            string output;
            ProcessStartInfo psi = new ProcessStartInfo();
            psi.FileName = "mysqldump.exe";
            psi.RedirectStandardInput = false;
            psi.RedirectStandardOutput = true;
            psi.Arguments = string.Format(@"-u{0} {1} -h{2} --default-character-set={3} {4}",
                login,
                string.IsNullOrEmpty(pass) ? "" : "-p" + pass,
                server,
                "utf8",
                db);
            psi.UseShellExecute = false;
            Process pr = Process.Start(psi);

            try
            {
                output = pr.StandardOutput.ReadToEnd();
                sw.WriteLine(output);
                pr.WaitForExit();
            }
            catch (Exception e)
            {
                return false;
            }
            finally
            {
                sw.Close();
                pr.Close();
            }
            return true;
        }
...
Рейтинг: 0 / 0
Резервная копия базы с помощью mysqldump. Помогите победить кодировку.
    #38618570
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Адов... А разве тула сама не умеет сразу в файл писать?
P.S.: http://stackoverflow.com/a/7651522
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Резервная копия базы с помощью mysqldump. Помогите победить кодировку.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]