2017-01-19 7 views
0

LOAD DATA INFILEメソッドを使用してC#でMySQLテーブルを作成しています。LOAD DATA IN FILEのMySqlクエリを使用したメソッドは終了しません

そこで私は、クエリ文字列を作成するための方法を書いた...

public static string LoadDataInFile(string TempCsv, string MatchId) 
     { 
      StringBuilder MySqlString = new StringBuilder(); 

      MySqlString.AppendFormat(@"LOAD DATA INFILE '{0}' INTO TABLE {1}_trackingdata 
       FIELDS TERMINATED BY ';' 
       IGNORE 1 LINES", TempCsv, MatchId); 
      return MySqlString.ToString(); 
     } 

と生のクエリを実行1:予想通り

public static void ExecuteRawQuery(string Query, string ConnectionString) 
     { 
      using (MySqlConnection conn = new MySqlConnection(ConnectionString.ToString())) 
      { 
       try 
       { 
        conn.Open(); 

        MySqlCommand cmd = new MySqlCommand(Query, conn); 
        cmd.ExecuteNonQuery(); 

        conn.Close(); 
        Console.WriteLine("Import probably done..."); 
        return; 
       } 
       catch (MySqlException SqlException) 
       { 
        Console.ForegroundColor = ConsoleColor.DarkRed; 
        Console.WriteLine("SqlException: {0}", SqlException.Message); 
        Console.WriteLine("Exit program."); 
        Console.ResetColor(); 

        Environment.Exit(0); 
       } 
      } 
     } 

テーブルは(プロ続編で確認)が取り込まれますしかし、アプリケーションは決して続かない。

public static void Main(string[] args) 
{ 
    // ... 
    ExecuteRawQuery(LoadDataInFile("myFile.csv", "123456")); 
    Console.WriteLine("I will never be displayed.."); 
    // ... 
} 

ExecuteRawQuery()が終了しない理由はありますか?他のクエリ(SELECT、UPDATE)を実行すると、すべてが期待通りに機能します。

+0

あなたは 'ExecuteRawQuery(LoadDataInFile(「myFile.csv」、「123456」))への呼び出しにブレークポイントを置くことによって、あなたのコードをステップ実行しようとしたことがあり;' F11を押して通話を開始しますか? –

答えて

0

なぜか分かりませんが、MySqlClient.MySqlBulkLoader -classを使用すると問題が解決します。誰もが同じ問題を経験するためにここにこれを残して:

public static void ImportCSV(string CSV, string TableName, string ConnectionString) 
     { 
      using (MySqlConnection conn = new MySqlConnection(ConnectionString.ToString())) 
      { 
       MySqlBulkLoader Bulkloader = new MySqlBulkLoader(conn); 

       Bulkloader.TableName = TableName; 
       Bulkloader.FileName = CSV; 
       Bulkloader.Timeout = 0; 
       Bulkloader.NumberOfLinesToSkip = 1; 
       Bulkloader.FieldTerminator = ";"; 

       var result = Bulkloader.Load(); 
       Console.WriteLine("Imported {0} rows into the database", result); 
      } 

     } 
関連する問題