我现在有一个表,想把Excel中的十几万跳数据使用游标插入,中途要对excel中的数据进行判断操作,急啊~
我的建议是不要使用游标插入 否则会很慢
你可以先把excel中的数据全部倒入到数据库中 再用sql对数据进行处理
不知道怎么能用游标上传数据,倒是数量多了用游标肯定会很慢。写个存储过程,条件写在存储过程中。 protected void btnUpload_Click(object sender, EventArgs e)
{
try
{
Er.Visible = true;
if (!FileUpload_Onboard.HasFile)
{
lblError.Text = "未选择文件";
return;
}
DataTable dtExcel = new DataTable();
//dtExcel = CommonCodes.ExcelHelper.ImpExcelDt(FileUpload_Onboard);
dtExcel = GetExcelTable(CommonCodes.ExcelHelper.ImpExcelDt(FileUpload_Onboard));
if (dtExcel == null)
{
lblError.Text = "导入文件无法识别";
return;
}
if (dtExcel.Rows.Count <= 0)
{
lblError.Text = "没有数据";
return;
}
DataTable dtInput = dtExcel.Select("CONVERT([EmployeeNo],'System.String') <> ''").CopyToDataTable();
DataSet ds = new DataSet();
int count = 0;
DataTable dtError = new DataTable();
dtError.Columns.Add("EmployeeNo");
dtError.Columns.Add("Errormessage");
//dtExcel = GetExcelTable(ds.Tables["EmployeeNo"]);
foreach (DataRow row in dtInput.Rows)
{
DataTable dt = new DataTable();
SqlParameter[] pars = new SqlParameter[dtExcel.Columns.Count + 2];
for (int i = 0; i < dtExcel.Columns.Count; i++)
{
pars[i] = new SqlParameter("@" + dtExcel.Columns[i].ColumnName.Replace("\\", "").Replace("/", "").Replace(" ", ""), row[i].ToString());
}
pars[dtExcel.Columns.Count] = new SqlParameter("@TrainingBatch", TrainingBatch.Text);
pars[dtExcel.Columns.Count +1] = new SqlParameter("@ModifyBy", modifyBy());
try
{
dt = SqlHelper.ExecuteDataTable(SqlHelper.ConnectionString, CommandType.StoredProcedure, "usp_TrainingRecord_Bulupload", pars);
if (dt.Rows.Count > 0 && !String.IsNullOrEmpty(dt.Rows[0][0].ToString()))
{
DataRow newRow = dtError.NewRow();
newRow.BeginEdit();
newRow["EmployeeNo"] = row["EmployeeNo"].ToString();
newRow["Errormessage"] = dt.Rows[0][0].ToString();
newRow.EndEdit();
dtError.Rows.Add(newRow);
}
else
{
count++;
}
}
catch (Exception ex)
{
DataRow newRow = dtError.NewRow();
newRow.BeginEdit();
newRow["EmployeeNo"] = row["EmployeeNo"].ToString();
newRow["Errormessage"] = ex.Message;
newRow.EndEdit();
dtError.Rows.Add(newRow);
}
}
Alert("上传成功,共" + count + "/" + dtInput.Rows.Count.ToString() + "条");
rep_ErrorList_Onboard.DataSource = dtError;
rep_ErrorList_Onboard.DataBind();
Button1.Visible = true;
}
catch (Exception ex)
{
lblError.Text = ex.Message;
}
}
将excel整理的表结构生成insert建表sql:https://download.csdn.net/download/gongjin28_csdn/85486975