2015-04-01 40 views
0

嗨我有一個應用程序,用戶可以使用csv文件的browes並將csv文件中的數據寫入表中,只能使用BULK INSERT當我使用BULK INSERT時,如何跳過第2行和最後一行

文本文件看起來像這樣

Student_head 201501 
student_id code amount 
1   salb 10015 
2   salb 10016 
3   salb 10017 
4   c100 4000 
5   salb 10022 
END  

我需要做的就是跳過第2行和最後一行。

我應該得到的東西是這樣的:

1   salb 10015 
    2   salb 10016 
    3   salb 10017 
    4   c100 4000 
    5   salb 10022 

我曾嘗試這個代碼,但似乎沒有任何要發生

 openFileDialog1.Filter = ".csv file|*.csv*"; 
     openFileDialog1.FilterIndex = 1; 

     DialogResult result = openFileDialog1.ShowDialog(); 

     if (result == DialogResult.Yes) 
     { 
      String file = openFileDialog1.FileName; 

      using (var reader = new StreamReader(file)) 
      { 
       string firstLine = reader.ReadLine(); 
       string[] splitedLine = firstLine.Split(';'); 
       string month = splitedLine[1]; 
      } 
      try 
      { 
       string connect = "Data Source=George-PC\\SQLEXPRESS; Initial Catalog=Students; user id =sa; Password=george1"; 

       SqlConnection con = new SqlConnection(connect); 
       con.Open(); 

       String BulkInsert = "BULK INSERT t_original FROM" + 
        file + "WITH (FIRSTROW = 3," + 
        "FIELDTERMINATOR = ''," + 
        "MAXERRORS = 0," + 
        "ROWTERMINATOR = '\\n')"; 
       //"UPDATE t_original"+ 
       //"SET month =" + month + 
       //"WHERE month is null"; 

       SqlCommand bulkCmd = new SqlCommand(BulkInsert, con); 
       bulkCmd.ExecuteNonQuery(); 

任何幫助,並告知可以理解

謝謝

+0

您預處理您的文件,可以刪除不希望導入的線? – 2015-04-01 08:50:32

+0

@LeeWillis就是這個問題,這個應用程序會被很多人使用,並且csv文件會有所不同,但裏面的數據更多。第2行和最後一行應該總是跳過 – Esther 2015-04-01 08:53:32

+0

您是不是已經問過他和有人指出您在FROM和WITH之後缺少空格? – 2015-04-01 09:41:18

回答

0

而不是使用SqlCommand,請嘗試使用SqlBulkCopy對象。

喜歡的東西...

DataTable table = new DataTable(); 
    //turn your CSV data into a DataTable using your favorite CSV parser. 
    //My favorite is [`TextFieldParser`][2]. 

using SqlBulkCopy copier = new SqlBulkCopy(connectionString, 
        SqlBulkCopyOptions.KeepIdentity Or SqlBulkCopyOptions.KeepNulls) { 
    // Now set up your column mappings via SqlBulkCopy.ColumnMappings 
    // Choose a destination table with SqlBulkCopy.DestinationTableName 

    // execute the copy 
    copier.WriteToServer(table); 
} 
+0

當我開始閱讀關於'TextFieldParser'的時候,我明白除了'BULK INSERT'方法還有其他的方法。 – Esther 2015-04-01 10:14:23

+0

好。很高興你解決了它。 – 2015-04-01 10:15:13

+0

謝謝,'TextFieldParser'對我來說是新的,但我認爲它非常有用 – Esther 2015-04-01 10:16:12