C#往SQLServer中插入大数据
2014-05-15 15:01
232 查看
以前插入大数据的时候都是一条一条的插入,由于电脑配置不行,有一次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('\t');
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());
前面听杨中科老师的课,发现一个很好的东西,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('\t');
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());
相关文章推荐
- C#往SQLServer中插入大数据
- C#连接SqlServer以及插入数据的实例
- C#往SQLServer中插入大数据
- C#往SQLServer中插入大数据
- C#_批量插入数据到Sqlserver中的四种方式
- c#几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql)
- insert into select union 插入数据到sqlserver中会自动排列
- C#(.NET)数据访问连接、查询、插入等操作的封装类
- ASP.net(c#)用类的思想实现插入数据到ACCESS例子
- c#中调用SQLserver的DTS包进行数据的转换
- SQLServer 如何获取刚插入数据的Id号
- sqlserver与c#中数据类型的对应关系
- C# 插入数据写回数据库,InsertCommand的使用方法
- c# 将图片的二进制数据插入到数据库中
- 要代码 c#中如何向其中插入文件 sql数据库中有一个text类型数据
- C#.net中批量插入数据到数据库中
- 一个C#(.NET)数据访问连接、查询、插入等操作的封装类
- ASP.net(c#)用类的思想实现插入数据到ACCESS例子
- (C#)excel数据导入SqlServer中
- 使用C#把Excel格式文件的数据导入到sqlserver中