惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Cloudflare Blog
博客园_首页
J
Java Code Geeks
A
About on SuperTechFans
人人都是产品经理
人人都是产品经理
量子位
C
Check Point Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 三生石上(FineUI控件)
L
LangChain Blog
N
Netflix TechBlog - Medium
Hugging Face - Blog
Hugging Face - Blog
B
Blog
美团技术团队
Microsoft Security Blog
Microsoft Security Blog
P
Proofpoint News Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
宝玉的分享
宝玉的分享
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
Last Week in AI
Last Week in AI

博客园 - 菜鸟吴迪

Lucene搜索结果排序问题(按时间倒序排的替代解决方法) 利用Lucene.net搜索引擎进行多条件搜索的做法 (转) (转)Razor引擎学习:RenderBody,RenderPage和RenderSection ASP.NET MVC3 返回多个实体或泛型 MySQL数据库集群Master-Slave模式安装摘要 使用HtmlAgilityPack批量抓取网页数据 Jquery each - 菜鸟吴迪 - 博客园 堆?栈?(转) 数据库并发控制!!! Velocity脚本简明教程 Visual Studio的调试技巧 《C#与.NET3.5高级程序设计(第4版)》笔记10 sql分页问题,老话题!! sql查询连续三天之内都有记录的人员!! Asp.net Mvc Controller接收可控的数组或字典类型的实现方法: SELECT INTO 和 INSERT INTO SELECT 两种表复制语句 (转) httpContext里面的东西!!! c#闭包!! c#新特性!!!
读取txt文本,批量插入到数据库中!
菜鸟吴迪 · 2012-08-02 · via 博客园 - 菜鸟吴迪

约700万条数据,耗时约5分钟,

 

protected void Page_Load(object sender, EventArgs e)
        {
            string path="D://1.TXT";
            string[] arr={"code","UserId","IsEncash","EncashDateTime","CreateTime","Mark"};
            DataSet ds = TextFileLoader(path, "tb", arr);

            int count = ds.Tables[0].Rows.Count;
            BulkInsert(ds.Tables[0]);
                   
            }

  /**/
        /**/
        /**/
        /// <summary>
        
/// 文件加载
        
/// </summary>
        
/// <param name="FilePath">带文件名的路径</param>
        
/// <param name="TableName">自定义的表名</param>
        
/// <param name="FieldsInArray">自定义的表字段</param>
        
/// <returns>DataSet</returns>

        public static DataSet TextFileLoader(string FilePath, string TableName, string[] FieldsInArray)
        {
            DataSet ds = new DataSet();
            DataTable dt = new DataTable(TableName);

            FileStream fs = File.Open(FilePath, FileMode.Open, FileAccess.Read);
            StreamReader sr = new StreamReader(fs);

            for (int i = 0; i < FieldsInArray.Length; i++)
            {
                dt.Columns.Add(new DataColumn(FieldsInArray[i], typeof(string)));
            }

            string strRead;
            bool flag = true;

            while (flag)
            {
                strRead = sr.ReadLine();

                if (!string.IsNullOrEmpty(strRead))
                {
                    string[] aryVale = strRead.Split('\t');

                    DataRow dr = dt.NewRow();
                    for (int k = 0; k < aryVale.Length; k++)
                    {
                        dr[FieldsInArray[k]] = aryVale[k];
                    }
                    dt.Rows.Add(dr);
                }
                else
                {
                    flag = false;
                }
            }

            ds.Tables.Add(dt);
            return ds;

        }

        private void BulkInsert(DataTable  dt) {
            string time = String.Empty;

            DateTime beginTime = DateTime.Now;

            using (SqlBulkCopy bulk = new SqlBulkCopy(System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"].ToString())) 
            {

                //{"code","UserId","IsEncash","EncashDateTime","CreateTime","Mark"}
                bulk.BatchSize = 1000;
                bulk.DestinationTableName = "OfficeEncashOne";
                bulk.ColumnMappings.Add("code""code");
                bulk.ColumnMappings.Add("UserId""UserId");
                bulk.ColumnMappings.Add("IsEncash""IsEncash");
                bulk.ColumnMappings.Add("EncashDateTime""EncashDateTime");
                bulk.ColumnMappings.Add("CreateTime""CreateTime");
                bulk.ColumnMappings.Add("Mark""Mark"); 
                
                
                bulk.WriteToServer(dt); 
            } 
            DateTime endTime = DateTime.Now; 
            TimeSpan useTime = endTime - beginTime; 
            dt.Dispose(); 
            time = "使用时间" + useTime.TotalSeconds.ToString() + ""
        }