1

我想将数据从电子表格导入数据库表。不幸的是,电子表格中的数据很乱,到处都包含“\n”。我想在批量导入之前将其删除。

批量复制过程实际上需要 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]);
    }
4

1 回答 1

0

这是我想出的用于删除将在 Fill 之后运行的换行符的代码

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", "");
       }
     }
}
于 2012-05-30T05:21:12.490 回答