• C#往SQLServer中插入大数据


    转自http://www.cnblogs.com/D-Wade-WP8/archive/2013/06/08/Wadeflash20130608001.html

    以前插入大数据的时候都是一条一条的插入,由于电脑配置不行,有一次17万条数据用了半个小时才插入完成,那个蛋疼啊!

    前面听杨中科老师的课,发现一个很好的东西,25万条数据配置好的电脑几秒钟就完成了,那是一个怎样神奇的代码呢? 

    我借花献佛下,呵呵 都是杨中科老师写的  拿出来晒晒 勿喷。

    数据表T_Nums中有四个字段:NumSection,AddressStr,NumType,AreaCode

    然后从文本文件中读取输入到一个DataTable中,然后将DataTable插入数据库即可 速度实在是太快了。

     

                string connStr = "Data Source=WADE-PC;Initial Catalog=Test;Persist Security Info=True;User ID=sa;Password=123456";
                DateTime startTime = DateTime.Now;
                OpenFileDialog dialog = new OpenFileDialog();
                dialog.Filter = "文本文件(*.txt)|*.txt";
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    DataTable dt = new DataTable();
                    dt.Columns.Add("NumSection");
                    dt.Columns.Add("AddressStr");
                    dt.Columns.Add("NumType");
                    dt.Columns.Add("AreaCode");
    
                    IEnumerable<string> lines = File.ReadLines(dialog.FileName, Encoding.Default);
                    foreach (string str in lines)
                    {
                        string[] strs = str.Split('	');
                        DataRow row = dt.NewRow();
                        row["NumSection"] = strs[0];
                        row["AddressStr"] = strs[1].ToString().Trim('"');
                        row["NumType"] = strs[2].ToString().Trim('"');
                        row["AreaCode"] = strs[3].ToString().Trim('"');
                        dt.Rows.Add(row);
                    }
                    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connStr))
                    {
                        bulkCopy.DestinationTableName = "T_Nums";
                        bulkCopy.ColumnMappings.Add("NumSection", "NumSection");
                        bulkCopy.ColumnMappings.Add("AddressStr", "AddressStr");
                        bulkCopy.ColumnMappings.Add("NumType", "NumType");
                        bulkCopy.ColumnMappings.Add("AreaCode", "AreaCode");
                        bulkCopy.WriteToServer(dt);
                    }
    
                    TimeSpan ts = DateTime.Now.Subtract(startTime);
                    MessageBox.Show("一共插入" + dt.Rows.Count + "条数据,用时:" + ts.ToString());
  • 相关阅读:
    在Android studio中,测试输出数组中最大子数组的和
    我所理解的软件开发模式
    java实现随机输出300题四则运算
    Demo(3月28日)
    关于构建之法中小飞问题的个人看法
    对搭档代码的一些意见
    项目复审
    安卓UI测试(基于android studio环境 espresso框架)
    读构建之法后的一些个人感受
    思考题
  • 原文地址:https://www.cnblogs.com/baiqjh/p/3462912.html
Copyright © 2020-2023  润新知