C#中批量数据导入,上十万条数据的导入。

自己测试了下,导入数十万条数据需要花费十几秒的时间。代码如下:

   

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using System.IO;
using System.Data.SqlClient;

namespace shoujihaomachaxun
{
    public partial class Form1 : Form
    {
    
        string dbconn = ConfigurationManager.ConnectionStrings["strSql"].ToString();
      
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fbd = new FolderBrowserDialog();
             if (fbd.ShowDialog() != DialogResult.OK) 
             {
                 return;    
             }  
            string path=fbd.SelectedPath;  
            string[] files=Directory.GetFiles(path,"*.txt",SearchOption.AllDirectories);
            foreach(string file in files)
            {
                using (SqlConnection conn = new SqlConnection(dbconn))
                {
                 
                    using (SqlCommand cmd =conn.CreateCommand())
                    {
                       
                        cmd.CommandText= "insert into phone(miphone,area,type,arphone) values(@mid,@ar,@ty,@arp)";
                        string lines = null;


                        string fname = Path.GetFileName(file);
                        string filename = Path.GetFileNameWithoutExtension(file);
                        using (FileStream filestream = File.OpenRead(file))
                        {
                            StreamReader reader = new StreamReader(file, Encoding.Default);
                            while ((lines = reader.ReadLine()) != null)
                            {
                                string[] strs = lines.Split('\t');
                                string miphone = strs[0].ToString();
                                string area = strs[1].ToString();
                                string type = strs[2].ToString();
                                string arphone = strs[3].ToString();
                                cmd.Parameters.Clear();
                                cmd.Parameters.Add(new SqlParameter("mid", miphone));
                                cmd.Parameters.Add(new SqlParameter("ar", area));
                                cmd.Parameters.Add(new SqlParameter("ty", type));
                                cmd.Parameters.Add(new SqlParameter("arp", arphone));
                                cmd.ExecuteNonQuery();

                            }
                        }
                    }
                }

            }
            MessageBox.Show("导入成功!");
        }

    }
}

其实做批量数据导入的时候,可以用C# SqlBulkCopy的类进行写,这样可以大大提高导入的性能。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值