您的位置:首页 > 编程语言 > C#

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

2013-05-28 11:49 302 查看
自己测试了下,导入数十万条数据需要花费十几秒的时间。代码如下:



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的类进行写,这样可以大大提高导入的性能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: