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的类进行写,这样可以大大提高导入的性能。
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的类进行写,这样可以大大提高导入的性能。
相关文章推荐
- C#连接数据库、读EXCEL表、批量导入数据
- 在C#应用程序中,利用表值参数过滤重复,批量向数据库导入数据,并且返回重复数据
- C#把DataTable里的数据批量导入SQLite
- C# BulkCopy方式数据批量导入数据库
- C# 把Excel中的数据批量导入DataSet中
- C#实现TXT文本数据批量导入SQL Server
- ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据
- [置顶] 关于C++、C#实现EXCEL数据库批量导入数据库万行以上数据效率问题
- sql sever2005中批量导入excel表格数据(Asp.net C#)
- 【转】C#批量导入数据到sqlserver
- C# 使用SqlBulkCopy,批量导入数据,并显示导入进度
- [已解决]C#批量高效率导入大数据到数据库[百万级以上]
- C# 实现批量导入数据
- C# 使用MySqlBulkLoader 批量导入数据到Mysql
- ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据
- 一个实现数据批量从mongodb导入Mysql的方案
- C#导入Excel2007数据的连接驱动
- window下mysql 5.7 批量导入数据出错 error1290
- 用java实现从文本文件批量导入数据至数据库
- 《项目经验》--简单三层使用DataTable向数据库表批量导入数据---向SqlServer多张张表中导入数据