2017-10-11 16 views
-1

PowerShellを初めて使用しました。 C#でmysql.exeを呼び出してPowershellを使ってクエリを実行する方法はありますか?私はクエリを実行し、結果をcsvファイルに変換したい。もちろんC#でPowerShellを使用してMySqlクエリを実行

.\mysql.exe -C -B --host=amazonaws -P 3306 --user=user --password=pass --database=MyDB --execute="SELECT * FROM MyTable LIMIT 5" | Out-File "C:\output.sql" 

using (PowerShell PowerShellInstance = PowerShell.Create()) 
{   
    ???? 
    PowerShellInstance.Invoke(); 
} 

おかげ

+0

がなぜ一緒にC#とPowerShellをミックスしたいですか?あなたはC#[簡単に](https://stackoverflow.com/q/21618015)からMySqlデータベースに接続することができます。 – vonPryz

+0

C#のPowerShellでコマンドラインプログラムを実行する代わりに、適切な[API](https://dev.mysql.com/downloads/connector/net/)を使用してください。 –

+0

@vonPryz私たちの現在のソリューションは、C#を使ってデータアクセス層を明確に定義していますが、この特定のタスクではコマンドを実行するために別のコンソールを用意してから、csvに変換するpowershellを使用します。私はProcess.Start(新しいProcessStartInfo)をcmd/mysql.exeに使用していましたが、後でPowershellを使用して結果を隠すように求められました。 – DrkDev

答えて

0

C#を使用してMySQLデータベースに接続することは簡単ですが、彼らはそれがPowerShellスクリプト

private static void GenerateNewInputFile(
     string server, 
     string user, 
     string password, 
     int port, 
     string database, 
     string query, 
     string mysqlLocation, 
     string outputFilePath) 
    { 
     using (var powershell = PowerShell.Create()) 
     { 
      var sb = new StringBuilder(); 
      sb.Append($"$server = \"{server}\"\n"); 
      sb.Append($"$user = \"{user}\"\n"); 
      sb.Append($"$password = \"{password}\"\n"); 
      sb.Append($"$port = {port}\n"); 
      sb.Append($"$db = \"{database}\"\n"); 
      sb.Append($"$query = \"{query}\"\n"); 
      sb.Append($"$mysql = \"{mysqlLocation}\"\n"); 
      sb.Append("$params = \"-C\",\"-B\",\"-h$server\",\"-P$port\",\"-u$user\",\"-p$password\",$db,\"-e$query\"\n"); 
      sb.Append($"& $mysql @params | Out-File \"{outputFilePath}\"\n"); 

      powershell.AddScript(sb.ToString()); 

      powershell.Invoke(); 
     } 

    } 
関連する問題