记录一种批量从excel表格中,SqlBulkCopy大批量插入sql server数据库的方法

首先通过excel获取需要的数据,我这里用的两个测试字段

//获取连接字符串

public SqlConnection con()
        {
            return new SqlConnection("server=localhost;uid=sa;pwd=rui110;database=AIS20230816104641");
            //这里的uid=test中的test必须是System Administrtor, 否则会出错
        }

pubilc void  TestSqlBulkCopy()

{

string StrConnMsg = @"server=localhost;uid=sa;pwd=rui110;database=AIS20230816104641";
            string sqls = "select * from T_DataTemp";
            DataTable dts = new DataTable();

           
            // 定义 Excel 连接字符串
            string connectionString = "Provider=Microsoft.ACE.OLEDB.16.0;Data Source=C:\\Users\\Lenovo\\Desktop\\ERP总重统计.xlsx;Extended Properties=\"Excel 12.0\";";

            // 创建 OleDbConnection 对象
            OleDbConnection conn = new OleDbConnection(connectionString);
            // 打开连接
            conn.Open();
            // 查询数据
            string sql = "SELECT 编码,重量 FROM [型号$]"; 

            OleDbDataAdapter adapter = new OleDbDataAdapter(sql, conn);

            DataTable dt = new DataTable();
            adapter.Fill(dt);
            // 关闭连接
            conn.Close();

            //获取数据
            using (SqlConnection conns = new SqlConnection(StrConnMsg))
            {
                SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(new SqlCommand(sqls, conns));
                 dts = new DataTable();
                sqlDataAdapter.Fill(dts);

            }

           //批量进行插入
            using (SqlConnection conns = new SqlConnection(StrConnMsg))
            {
                SqlBulkCopy bulkCopy = new SqlBulkCopy(conns);
                bulkCopy.DestinationTableName = "T_DataTemp";
                bulkCopy.BatchSize = dts.Rows.Count;
                conns.Open();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    DataRow dr = dts.NewRow();
                    dr[0] = dt.Rows[i]["编码"];
                    dr[1] = dt.Rows[i]["重量"];

                    dts.Rows.Add(dr);
                }
                if (dts != null && dts.Rows.Count != 0)
                {
                    bulkCopy.WriteToServer(dts);

                }
            }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值