2012-05-30 56 views
1

我想从电子表格导入数据到数据库表格。不幸的是,电子表格中的数据很混乱,并且到处都包含'\ n'。我想在bulkimport之前将其删除。在导入数据库之前,我可以处理SqlBulkCopy类中的数据吗?

大容量复制程序实际上需要2个步骤。一世。将电子表格中的数据复制到数据中。 II。执行SqlBulkCopy将所有数据复制到数据库表

如果我无法处理SqlBulkCopy类中的数据,那么在DataSet中执行此操作的最佳方法是什么?

//get the data from the spreadsheet to a dataset 
    DataSet ds = new DataSet(); 
    oledbConn.Open(); 
    OleDbCommand cmd = new OleDbCommand("SELECT * FROM [sheetname]"), oledbConn); 
    OleDbDataAdapter oleda = new OleDbDataAdapter(); 
    oleda.SelectCommand = cmd; 
    oleda.Fill(ds); 

    //execute to bulkcopy with the dataset 
    using (SqlBulkCopy bulkcopy = new SqlBulkCopy(conn)) 
    { 
     bulkcopy.DestinationTableName = "[DestinationTableName]"; 
     bulkcopy.WriteToServer(ds.Tables[0]); 
    } 
+1

由于*为*数据表提供的'Fill'后,然后做任何操纵所需...只是迭代行并更新数据。 (也就是说,这有什么问题?) – 2012-05-30 00:53:42

+0

是的。我只是想知道在SQLBulkCopy类中是否可以使用任何魔术。谢谢@pst。 – seanbun

+0

不是。它不是[SSIS](http://en.wikipedia.org/wiki/SQL_Server_Integration_Services);-) – 2012-05-30 02:05:43

回答

0

这是我拿出来去除后面将要运行换行符代码填写

foreach (DataRow dr in ds.Tables[0].Rows) 
{ 
    foreach (DataColumn dc in ds.Tables[0].Columns) 
    { 
     if (dc.DataType == typeof(string)) 
     { 
      dr[dc] = dr[dc].ToString().Replace("\n", ""); 
     } 
    } 
} 
相关问题