2017-01-30 73 views
0

警告我寫了一個簡單的程序加載使用LOAD DATA LOCAL..MySQL的LOAD DATA LOCAL顯示從C#

 loadFileSQL = "LOAD DATA...." 
    using (MySqlCommand cmd = new MySqlCommand(loadFileSQL, conn)) 
      { 
        try 
        { 
         Console.WriteLine("Loading File...."); 
         cmd.ExecuteNonQuery(); 
         Console.WriteLine("Load file complete..."); 

        } 
        catch (MySqlException ex) 
        { 
         Trace.WriteLine("MySQL Something went wrong" + ex.InnerException.Message); 
        } 

        ... 
      } 

我想記錄的消息多少行插入,有多少跳過多少次失敗的csv文件..我怎麼捕捉它?如果有一些失敗了,是否有可能知道哪些行失敗?

+0

使用'cmd.ExecuteScalar'獲取受影響的行數。你會得到唯一的編號,沒有詳細信息 –

+0

是的,但是有多少跳過失敗..等等,類似於你在mysql命令提示符下執行加載數據時看到的結果 – cableload

+1

你可以嘗試爲MySqlConnection編寫一個事件處理程序。 InfoMessage事件。我不知道它是否適用於您的情況,但值得一試。 _InfoMessage(對象發件人,MySqlInfoMessageEventArgs e)_然後查看MySqlError的錯誤集合。 – Steve

回答

1

感謝所有爲您的建議和提示。我能夠通過使用錯誤性質

public static void OnInfoMessage(object sender, MySqlInfoMessageEventArgs e) 
    { 
     foreach (MySqlError err in e.errors) 
     { 
      Console.WriteLine(err.Code + ":" + err.Message); 
     } 

    } 

獲得控制檯上的infomessage打印,隨時隨地打開連接,只需要創建一個處理程序,提到在評論

conn.InfoMessage += new MySqlInfoMessageEventHandler(OnInfoMessage); 

雖然它不打印多少出錯了或者跳過或插入,它打印出局的列被截斷或不正確的..等完全按照你的mysql命令行中看到。

+0

所以這是錯誤集合....這很好知道。 – Steve