2010-12-15 70 views
3

J'essaie de restaurer les données de base de données MySQL à partir d'un fichier de vidage, en utilisant les codes C#.C# Restauration de base de données MySQL

Je suppose que d'exécuter la commande suivante: mysql --verbose --user = root --password = qwerty123456 tests < C: \ Users \ Default \ testing.SQL

Je sais que C# n » Je reconnais le symbole "<", donc j'ai essayé plusieurs façons, mais cela n'a toujours pas fonctionné. Quelqu'un peut-il m'aider avec ça? Je veux restaurer toutes mes données de base de données dans MySQL en utilisant les codes C#.

Merci d'avance.

  Process process = new Process(); 
      process.StartInfo.FileName = @"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe"; 
      process.StartInfo.Arguments = @"--verbose --user=root --password=qwerty123456 test"; 
      process.StartInfo.UseShellExecute = false; 
      process.StartInfo.RedirectStandardOutput = true; 
      process.StartInfo.RedirectStandardInput = true; 
      process.StartInfo.RedirectStandardError = true; 
      process.StartInfo.CreateNoWindow = true; 
      process.Start(); 

      StreamReader sr = process.StandardOutput; 
      sr = File.OpenText(@"C:\Users\Default\testing.SQL"); 

Répondre

2

Le traitement doit < (IIRC) OK si vous définissez simplement UseShellExecute = true.

Cependant, si vous voulez vraiment éviter l'exec shell, < est une entrée - vous devriez écrire le fichier à StandardInput. Je vais probablement laisser StandardOutput seul (mettre RedirectStandardOutput = false si vous ne voulez pas activement la sortie).

Non testé, mais peut-être:

 using(var stdin = process.StandardInput) 
     using(var reader = File.OpenText(@"C:\Users\Default\testing.SQL")) { 
      string line; 
      while((line = reader.ReadLine()) != null) { 
       stdin.WriteLine(line); 
      } 
      stdin.Close(); 
     } 

(qui devrait tuyau dans la ligne de fichiers en ligne)

+0

Merci à! Ça marche. – athgap