Tuesday, January 15, 2013

Bulk Import in SQL From DataTable



  protected void BtnSave_Click(object sender, EventArgs e)
        {
            try
            {
                DataTable dt = DynamicColumns();
                SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings["ETRMDBString"]);
                SqlBulkCopy bc = new SqlBulkCopy(con.ConnectionString, SqlBulkCopyOptions.TableLock);
                bc.DestinationTableName = "ETRMForecastDetails";
                bc.BatchSize = dt.Rows.Count;
                con.Open();
                bc.WriteToServer(dt);
                bc.Close();
                con.Close();
                Common.alert("Data Save Sucessfully!", this);
                grdForcastImport.DataSource = null;
                grdForcastImport.DataBind();
                ViewState["dt"] = null;
                trSave.Visible = false;
                trupload.Visible = true;
                clearFolder(Server.MapPath("~/Upload/"));
            }
            catch (Exception ex)
            {
                Common.alert(ex.Message , this);
            }
}  
    DataTable DynamicColumns()
        {
            DataTable dt = new DataTable();
            DataColumn dc; DataRow row;
            dc = new DataColumn("FrcId"); dt.Columns.Add(dc);
            dc = new DataColumn("ForeType"); dt.Columns.Add(dc);
            dc = new DataColumn("RefUOMId"); dt.Columns.Add(dc);
            dc = new DataColumn("Volume"); dt.Columns.Add(dc);
            dc = new DataColumn("PType"); dt.Columns.Add(dc);
            dc = new DataColumn("ProfileCompID"); dt.Columns.Add(dc);
            dc = new DataColumn("ProfileLocID"); dt.Columns.Add(dc);
            dc = new DataColumn("Year"); dt.Columns.Add(dc);
            dc = new DataColumn("Month"); dt.Columns.Add(dc);
            dc = new DataColumn("Date"); dt.Columns.Add(dc);
            dc = new DataColumn("Hours"); dt.Columns.Add(dc);
            dc = new DataColumn("Createdby"); dt.Columns.Add(dc);
            dc = new DataColumn("Createddate"); dt.Columns.Add(dc);
            dc = new DataColumn("UpdatedBy"); dt.Columns.Add(dc);
            dc = new DataColumn("UpdatedDate"); dt.Columns.Add(dc);
            dc = new DataColumn("TimeZoneid"); dt.Columns.Add(dc);
            DataTable vdt = (DataTable)ViewState["dt"];

            foreach (DataRow dr in vdt.Rows)
            {
                row = dt.NewRow();
                row["FrcId"] = 0;
                row["RefUOMId"] = dr[2].ToString();
                row["ForeType"] = dr[1].ToString();
                row["Volume"] = dr[3].ToString();
                row["PType"] = dr[4].ToString();
                row["ProfileCompID"] = dr[5].ToString() == "" ? Convert.DBNull : dr[5].ToString();
                row["ProfileLocID"] = dr[6].ToString() == "" ? Convert.DBNull : dr[6].ToString();
                row["Year"] = dr[7].ToString();
                row["Month"] = dr[8].ToString();
                row["Date"] = dr[9].ToString();
                row["Hours"] = dr[10].ToString();
                row["Createdby"] = "1";
                row["Createddate"] = DateTime.Now.ToString("dd-MMM-yyyy HH:mm");
                row["UpdatedBy"] = "1";
                row["UpdatedDate"] = DateTime.Now.ToString("dd-MMM-yyyy HH:mm");
                row["TimeZoneid"] = dr[11];
                dt.Rows.Add(row);
            }

            return dt;
        }

No comments:

Post a Comment