2016-06-06 6 views
1

Мне нужно вставить более 1000 записей в SQL Server. Но используя мой код, я могу вставить только 1000 записей. Пожалуйста, помогите мне.Как вставить более 1000 записей с использованием SqlBulkCopy

using (SqlBulkCopy s = new SqlBulkCopy(dbConnection,SqlBulkCopyOptions.UseInternalTransaction, null)) 
{ 
    s.DestinationTableName = TableName; 
    s.BatchSize = 10000; 
    s.BulkCopyTimeout = 1800; 
    foreach (var column in dt.Columns) 
    { 
     s.ColumnMappings.Add(column.ToString(), column.ToString()); 
    } 
    s.WriteToServer(dt); 
} 
+0

Что происходит, когда вы вставляете 1001 запись? –

+0

Он только вставляет первые 1000 записей и отбрасывает все записи после 1000. –

+0

Доходит ли он до вашего тайм-аута или представляет собой исключение, некоторые сообщения об ошибках? –

ответ

1

Ниже в режиме реального времени рабочий код, который я использовал в своем проекте для вставки больших объемов данных из Excel на сервер SQL

C# код:

public static DataSet Bindgrid_StoreInSQL(string path) 
    { 


      string strFileType = Path.GetExtension(path).ToLower(); 
      string connString = ""; 
      if (strFileType.Trim() == ".xls") 
      { 
       connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; 
      } 
      else if (strFileType.Trim() == ".xlsx") 
      { 
       connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; 
      } 
      string query = "SELECT * FROM [Sheet1$]"; 
      OleDbConnection conn = new OleDbConnection(connString); 
      OleDbCommand cmd = new OleDbCommand(query, conn); 
      OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
      DataSet ds = new DataSet(); 
      da.Fill(ds); 
      DataTable Exceldt = ds.Tables[0]; 

      //creating object of SqlBulkCopy  
      SqlBulkCopy objbulk = new SqlBulkCopy(OneStopMethods_Common.constring_Property); 
      //assigning Destination table name  
      objbulk.DestinationTableName = "Tern_boq"; 


      objbulk.ColumnMappings.Add("ID", "ID"); 
      objbulk.ColumnMappings.Add("Bill_No", "Bill_No"); 
      objbulk.ColumnMappings.Add("Page_No", "Page_No"); 
      objbulk.ColumnMappings.Add("ItemNo", "ItemNo"); 
      objbulk.ColumnMappings.Add("Description", "Description"); 
      objbulk.ColumnMappings.Add("BOQ_Qty", "BOQ_Qty"); 
      objbulk.ColumnMappings.Add("UNIT", "UNIT"); 
      objbulk.ColumnMappings.Add("Category1", "Category1"); 
      objbulk.ColumnMappings.Add("Category2", "Category2"); 
      objbulk.ColumnMappings.Add("Category3", "Category3"); 
      objbulk.ColumnMappings.Add("Estimated_UnitRate", "Estimated_UnitRate"); 
      objbulk.ColumnMappings.Add("Estimated_Amount", "Estimated_Amount"); 



      //inserting Datatable Records to DataBase  
      conn.Open(); 
      objbulk.WriteToServer(Exceldt); 


      SqlDatabase obj = new SqlDatabase(OneStopMethods_Common.constring_Property); 
      string selquery = " select * from Tern_boq"; 
      return obj.ExecuteDataSet(CommandType.Text, selquery); 




    } 

Его прекрасно работает, Надеюсь, это может дать вам некоторую идею. Пожалуйста, дайте мне знать ваши мысли или предложения.

+0

Работает отлично. Я могу вставить более 1000 строк. Спасибо man :) –

+0

Его мое удовольствие и я очень рад, что я мог бы помочь вам .. :) .. Просьба дать мне знать, если что-то еще требуется ... Счастливый обмен .. :) –

 Смежные вопросы

  • Нет связанных вопросов^_^