SqlBulkCopy: aggiunge righe al database con valori aggiuntivi

ado.net asp.net c# sqlbulkcopy sql-server

Domanda

Sto provando uno snippet di codice che aggiunge dati excel nel database SQL utilizzando SqlBulkCopy. Lo snippet di codice è come indicato di seguito

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);
            }

Questo aggiunge i dati dal file excel alla tabella del database del server sql. Ma il mio requisito è che ho bisogno di aggiungere i valori di excel sheet plus inoltre i miei valori dicono studentid autogenerato.

Quindi la mia domanda è come aggiungerò nuovi valori (ad esempio studentid, batchcode ecc.) Insieme ai valori letti da excel. E questi valori da aggiungere a ciascuna riga di dati di Excel.

Esempio:-

excel contiene le seguenti colonne

CustomerID, città, paese, CodicePostale

Ora ho bisogno di aggiungere valori a SQL Server aggiungendo alcune nuove colonne come

StudentID, CustomerID, BatchCode, City, Country, Email, PostalCod e

Come posso farlo

Per favore aiuto

Risposta accettata

Potresti fare quanto segue:

  • caricare i dati excel in una tabella di dati,
  • Aggiungi le colonne rimanenti alla tabella dei dati,
  • Imposta nuovi valori di colonna
  • SqlBulkCopy la tabella di dati in SQL Server.

Qualcosa come questo:

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);


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché