文本文档数据导入数据库(大数据插入到数据库)

本文介绍了如何高效地将大量文本数据导入数据库,通过使用DataTable存储并一次性插入数据,避免了一条条插入的低效。首先讲解了如何打开文件资源、读取文本文档内容,然后创建表结构,接着进行数据初始化和绑定,最终实现快速的数据导入。

           用excel导入用户到数据库中,一两秒导入几千条数据感觉非常快,但是这是一条条的插入到数据库的。在做select

*的时候,数据是一条条的插入的吗?用一个datatable保存所有查询的数据返回给客户端。

          

           大量数据的导入也是这样的。把很多数据保存到table中然后保存table就可以了。

          

          首先看一下怎么打开资源库并且把选中的路径放到文本框,并且寻找文本文档。

         

  using (OpenFileDialog ofd=new OpenFileDialog())//资源
            {
                ofd.Filter = "文本文档|*.txt";//筛选文章类别
                if (ofd.ShowDialog()==DialogResult.OK)//选中
                {
                    txtImport.Text = ofd.FileName;//将选择的文本地址赋值
                    IMportData(ofd.FileName);
                }
            }

文本文档的数据读取,表的建立,初始化,绑定数据,插入

 

 string temp = string.Empty;
            //读取文件的名称
            using (StreamReader reader = new StreamReader(FileName,Encoding.UTF8))
            {
             
                reader.ReadLine();//去掉第一行
                //读取配置文件
                string connstr = ConfigurationManager.ConnectionStrings["sql2"].ConnectionString;
                //新建,初始化表,表格中的数据要和数据库中的类型一致,字段名也要相同
                DataTable once_Sockdetailhistory = new DataTable();
                once_Sockdetailhistory.Columns.Add("SockNumber", typeof(int));
                once_Sockdetailhistory.Columns.Add("Scokintotime", typeof(DateTime));
                once_Sockdetailhistory.Columns.Add("Sockintopeople", typeof(string));
                once_Sockdetailhistory.Columns.Add("SockID", typeof(string));
                once_Sockdetailhistory.Columns.Add("SockdetailhistoryID", typeof(string));
                using (SqlConnection conn=new SqlConnection(connstr))
                {
                    //using (SqlCommand cmd=conn.CreateCommand())
                    //{
                        conn.Open();
                        while (!string.IsNullOrEmpty(temp = reader.ReadLine()))
                        {
                            var strs = temp.Split(',');
                            //string sql = string.Format("insert into Sockdetailhistory(SockNumber,Sockintopeople,SockID) values('{0}','{1}','{2}')", strs[0],strs[1], strs[4]);
                            //cmd.CommandText = sql;
                            //cmd.ExecuteNonQuery();
                            //表格填充,创建新的一行,逐行赋值
                            DataRow newrow = once_Sockdetailhistory.NewRow();
                            newrow["SockNumber"] = strs[0];
                            newrow["Sockintopeople"] = strs[1];
                            newrow["SockID"] = strs[4];
                            //把这一行添加到表中
                            once_Sockdetailhistory.Rows.Add(newrow);
                        }
                        addDatatabletosql(once_Sockdetailhistory,conn);
                    //}
                }
             
            }
    private void addDatatabletosql(DataTable once_Sockdetailhistory,SqlConnection thisconn)
        {
            using (SqlBulkCopy bulkcopy=new SqlBulkCopy(thisconn))//相当于sqlcommand
            {
                bulkcopy.DestinationTableName = "Sockdetailhistory";  //数据表
                bulkcopy.WriteToServer(once_Sockdetailhistory);
            }
        }


评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值