2016-04-14 2 views
1

Ich verbringe Stunden mit der Fehlerbehebung dieses. Ich habe diesen Codemit mysqldump auf process.start passiert nichts, aber wenn ich das Argument auf cmd es funktioniert funktioniert

Dim drive_name As String = Directory.GetCurrentDirectory & "\database" 

    Dim db_name As String = "sample_db.sql" 

    Dim argument As String = "-u root sample_db table1 > """ & drive_name & "\" & db_name & """" 
    Try 
     Diagnostics.Process.Start("C:\xampp\mysql\bin\mysqldump.exe", argument) 
     Console.WriteLine("Argument: " & argument) 
    Catch ex As Exception 
     Console.WriteLine("Error: " & ex.ToString) 
    End Try 

Mit Blick auf die console.writeline es eine Ausgabe wie diese

-u root sample_db table1 > "C:\Users\MyName\Desktop\MyProjectPath\bin\Debug\database\sample_db.sql" 

Aber C:\Users\MyName\Desktop\MyProjectPath\bin\Debug\database\ Überprüfung ich nicht sample_db.sql sehen kann, so dass ich öffnen mysqdump kopieren die console.writeline und fügen Sie ihn auf cmd. Ich habe jetzt dies auf mysqldump

C:\Users\MyName>C:\xampp\mysql\bin\mysqldump -u root sample_db table1 > "C:\Users\MyName\Desktop\MyProjectPath\bin\Debug\database\sample_db.sql" 

Durch Ausführen auf mysqldump funktioniert es.

Wie behebe ich das?

+1

Ich bin überrascht über die Verwendung von Lessthan, hätte ich erwartet, größer – BugFinder

+0

Oh, das tut mir leid! Es ist nur ein Tippfehler. –

+0

:) ok das ist fair genug in dem Fall haben Sie versucht, mit dem Prozess.StandardOutput Option einen Stream zu öffnen und es schreiben und so weiter? – BugFinder

Antwort

0

Basis auf den Vorschlag von BugFinder Ich bin jetzt in der Lage, standardInput und StandardOutput`

zu verwenden

-Code für den Import:

Try 
     Dim myProcess As New Diagnostics.Process() 
     myProcess.StartInfo.FileName = "cmd.exe" 
     myProcess.StartInfo.UseShellExecute = False 
     myProcess.StartInfo.WorkingDirectory = "C:\xampp\mysql\bin\" 
     myProcess.StartInfo.RedirectStandardInput = True 
     myProcess.StartInfo.RedirectStandardOutput = True 
     myProcess.Start() 
     Dim myStreamWriter As StreamWriter = myProcess.StandardInput 
     Dim mystreamreader As StreamReader = myProcess.StandardOutput 
     createDatabase() 
     myStreamWriter.WriteLine("mysql -u root sample_db < " & drive_name & "\" & db_name) 
     myStreamWriter.Close() 
     myProcess.WaitForExit() 
     myProcess.Close() 
    Catch ex As Exception 
     Console.WriteLine("Error on Import: " & ex.ToString) 
    End Try 

Wenn Sie es importieren, ändern möchten, einfach diese Codezeile ändern Befehl zu Ihrem gewünschten mysqldump Export:

myStreamWriter.WriteLine("mysql -u root sample_db < " & drive_name & "\" & db_name) 

Beispiel für Exportbefehl

0

In this link ein Benutzer vorgeschlagen, die >--r

Also statt

Dim argument As String = "-u root sample_db table1 > """ & drive_name & "\" & db_name & """" 

Sie werden nun

haben
Dim argument As String = "-u root sample_db table1 -r """ & drive_name & "\" & db_name & """" 

zu ändern Und es wird Arbeit!

1

Während dies nicht verwendet mysql (wie ich es nicht habe) der Principal gilt.

Process p = new Process(); 
p.StartInfo.FileName = @"c:\windows\system32\ipconfig.exe"; 
p.StartInfo.Arguments = @"/all"; 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardOutput = true; 
p.Start(); 
String output = p.StandardOutput.ReadToEnd(); 
File.WriteAllText(@"c:\log.txt",output); 
p.WaitForExit(); 

in log.txt wurde meine Ausgabe wie erwartet.

so in Ihrem Fall haben Sie den mysqldump Befehl in Dateinamen, Argumente Argumente und die WriteAllText zu der Ausgabedatei ändern

Offensichtlich kann man dann so weit, kreativer sein verwenden, sollten Sie sich wünschen, Größe für Beispiel vielleicht ein Problem, schließlich, wenn Sie gb Daten haben, speichert alles in einer Zeichenfolge möglicherweise ein bisschen viel, aber die Ausgabe ist ein Stream, so realistisch könnten Sie weiter arbeiten und mit dem Stream direkter arbeiten und Ausgabe Chunk von Chunk

+0

Danke! Aufgrund Ihres Beispiels kann ich nun nach dieser Art von Sicherung und Wiederherstellung suchen. http://www.codeproject.com/Tips/726407/MYSQL-Database-Backup-Restore –

Verwandte Themen