SqlBulkCopy-将行和其他值添加到数据库中

本文关键字:添加 数据库 其他 SqlBulkCopy- | 更新日期: 2023-09-27 18:20:00

我正在尝试使用SqlBulkCopy将excel数据添加到sql数据库中的代码片段。代码片段如下所示

OleDbConnection connection=null;
        string FilePath="";
         try
            {
                if (FileUpload1.HasFile)
                {
                    FileUpload1.SaveAs(Server.MapPath("~/UploadedFolder/"+FileUpload1.FileName));
                    FilePath = Server.MapPath("~/UploadedFolder/"+FileUpload1.FileName);
         
                }
                string path = FilePath;
                // Connection String to Excel Workbook
                string excelConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0", path);
                connection = new OleDbConnection();
                connection.ConnectionString = excelConnectionString;
                OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", connection);
                connection.Open();
                // Create DbDataReader to Data Worksheet
                DbDataReader dr = command.ExecuteReader();
                // SQL Server Connection String
                string sqlConnectionString = @"Data Source=sample;Initial Catalog=ExcelImport;User ID=sample;Password=sample";
                // Bulk Copy to SQL Server 
                SqlBulkCopy bulkInsert = new SqlBulkCopy(sqlConnectionString);
                bulkInsert.DestinationTableName = "Customer_Table";
                bulkInsert.WriteToServer(dr);
           
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
            finally
            {
                connection.Close();
                Array.ForEach(Directory.GetFiles(Server.MapPath("~/UploadedFolder/")), File.Delete);
            }

这将excel文件中的数据添加到sql server数据库表中。但我的要求是,我需要添加excel表的值,再加上我自己的值,比如自动生成的studentid。

所以我的问题是如何添加新的值(比如studentid、batchcode等)以及从excel中读取的值。并将这些值添加到excel数据的每一行中。

示例:-

excel包含以下列

客户ID、城市、国家/地区、邮政编码

现在,我需要通过添加一些新列作为来向sql server添加值

学生ID、客户ID、批次代码、城市、国家/地区、电子邮件、邮政编码e

我该怎么做

请帮助

SqlBulkCopy-将行和其他值添加到数据库中

您可以执行以下操作:

  • 将excel数据加载到数据表中
  • 将其余列添加到数据表中
  • 设置新列值
  • SqlBulk将数据表复制到SQL Server中

类似这样的东西:

DbDataReader dr = command.ExecuteReader();
DataTable table = new DataTable("Customers");
table.Load(dr);
table.Columns.Add("StudentId", typeof(int));
table.Columns.Add("BatchCode", typeof(string));
table.Columns.Add("Email", typeof(string));
foreach (DataRow row in table.Rows)
{
    row["StudentId"] = GetStudentId(row);
    row["BatchCode"] = GetBatchCode(row);
    row["Email"] = GetEmail(row);
}

// SQL Server Connection String
string sqlConnectionString = @"Data Source=sample;Initial Catalog=ExcelImport;User ID=sample;Password=sample";
// Bulk Copy to SQL Server 
SqlBulkCopy bulkInsert = new SqlBulkCopy(sqlConnectionString);
bulkInsert.DestinationTableName = "Customer_Table";
bulkInsert.WriteToServer(table);