资源简介
C# sql实现批量导入数据到数据库里面包含普通的方法、SqlBulkCopy方法、使用表值方式(TVP)插入的三种方法。可以测试看出每个方法的运行时间。
代码片段和文件信息
using System;
using System.Diagnostics;
using System.Data;
using System.Data.SqlClient;
using com.DataAccess;
using DBAccessLib;
namespace ConsoleAppInsertTest
{
class Program
{
static string connectionString = SqlHelper.ConnectionStringLocalTransaction; //数据库连接字符串
static int count = 1000000; //插入的条数
static void Main(string[] args)
{
//long commonInsertRunTime = CommonInsert();
//Console.WriteLine(string.Format(“普通方式插入{1}条数据所用的时间是{0}毫秒“ commonInsertRunTime count));
Console.WriteLine(“开始插入数据“);
long sqlBulkCopyInsertRunTime = SqlBulkCopyInsert();
Console.WriteLine(string.Format(“使用SqlBulkCopy插入{1}条数据所用的时间是{0}毫秒“ sqlBulkCopyInsertRunTime count));
long TVPInsertRunTime = TVPInsert();
Console.WriteLine(string.Format(“使用表值方式(TVP)插入{1}条数据所用的时间是{0}毫秒“ TVPInsertRunTime count));
Console.ReadLine();
}
///
/// 普通调用存储过程插入数据
///
///
private static long CommonInsert()
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
string passportKey;
for (int i = 0; i < count; i++)
{
passportKey = Guid.NewGuid().ToString();
SqlParameter[] sqlParameter = { new SqlParameter(“@passport“ passportKey) };
SqlHelper.ExecuteNonQuery(connectionString CommandType.StoredProcedure “CreatePassportWithTVP“ sqlParameter);
}
stopwatch.Stop();
return stopwatch.ElapsedMilliseconds;
}
///
/// 使用SqlBulkCopy方式插入数据
///
///
///
private static long SqlBulkCopyInsert()
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
DataTable dataTable = GetTableSchema();
string passportKey;
for (int i = 0; i < count; i++)
{
passportKey = Guid.NewGuid().ToString();
DataRow dataRow = dataTable.NewRow();
dataRow[0] = passportKey;
dataTable.Rows.Add(dataRow);
}
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connectionString);
sqlBulkCopy.DestinationTableName = “Passport“;
sqlBulkCopy.BatchSize = dataTable.Rows.Count;
SqlConnection sqlConnection = new SqlConnection(connectionString);
sqlConnection.Open();
if (dataTable!=null && dataTable.Rows.Count!=0)
{
sqlBulkCopy.WriteToServer(dataTable);
}
sqlBulkCopy.Close();
sqlConnection.Close();
stopwatch.Stop();
return stopwatch.Elap
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 257 2011-12-16 14:11 批量导入数据库(mysql实现)\ConsoleAppInsertTest\App.config
文件 9216 2012-01-09 17:22 批量导入数据库(mysql实现)\ConsoleAppInsertTest\bin\Debug\ConsoleAppInsertTest.exe
文件 257 2011-12-16 14:11 批量导入数据库(mysql实现)\ConsoleAppInsertTest\bin\Debug\ConsoleAppInsertTest.exe.config
文件 28160 2012-01-09 17:22 批量导入数据库(mysql实现)\ConsoleAppInsertTest\bin\Debug\ConsoleAppInsertTest.pdb
文件 14328 2012-01-09 17:22 批量导入数据库(mysql实现)\ConsoleAppInsertTest\bin\Debug\ConsoleAppInsertTest.vshost.exe
文件 257 2011-12-16 14:11 批量导入数据库(mysql实现)\ConsoleAppInsertTest\bin\Debug\ConsoleAppInsertTest.vshost.exe.config
文件 490 2007-07-21 01:33 批量导入数据库(mysql实现)\ConsoleAppInsertTest\bin\Debug\ConsoleAppInsertTest.vshost.exe.manifest
文件 13824 2012-01-09 17:00 批量导入数据库(mysql实现)\ConsoleAppInsertTest\bin\Debug\DBAccessLib.dll
文件 46592 2012-01-09 17:00 批量导入数据库(mysql实现)\ConsoleAppInsertTest\bin\Debug\DBAccessLib.pdb
文件 2890 2012-01-09 17:22 批量导入数据库(mysql实现)\ConsoleAppInsertTest\ConsoleAppInsertTest.csproj
文件 2403 2012-01-09 17:22 批量导入数据库(mysql实现)\ConsoleAppInsertTest\obj\Debug\ConsoleAppInsertTest.csproj.FileListAbsolute.txt
文件 9216 2012-01-09 17:22 批量导入数据库(mysql实现)\ConsoleAppInsertTest\obj\Debug\ConsoleAppInsertTest.exe
文件 28160 2012-01-09 17:22 批量导入数据库(mysql实现)\ConsoleAppInsertTest\obj\Debug\ConsoleAppInsertTest.pdb
文件 3947 2012-01-09 17:22 批量导入数据库(mysql实现)\ConsoleAppInsertTest\obj\Debug\ResolveAssemblyReference.cache
文件 4476 2012-01-09 17:25 批量导入数据库(mysql实现)\ConsoleAppInsertTest\Program.cs
文件 1372 2010-03-01 22:43 批量导入数据库(mysql实现)\ConsoleAppInsertTest\Properties\AssemblyInfo.cs
文件 11805 2011-12-16 11:50 批量导入数据库(mysql实现)\ConsoleAppInsertTest\SqlHelper.cs
文件 1437 2012-01-09 16:55 批量导入数据库(mysql实现)\ConsoleAppInsertTest.sln
..A..H. 35840 2012-01-09 17:26 批量导入数据库(mysql实现)\ConsoleAppInsertTest.suo
文件 13824 2012-01-09 17:00 批量导入数据库(mysql实现)\DBAccessLib\bin\Debug\DBAccessLib.dll
文件 46592 2012-01-09 17:00 批量导入数据库(mysql实现)\DBAccessLib\bin\Debug\DBAccessLib.pdb
文件 4481 2012-01-09 16:54 批量导入数据库(mysql实现)\DBAccessLib\DBAccessLib.cs
文件 2900 2012-01-09 17:25 批量导入数据库(mysql实现)\DBAccessLib\DBAccessLib.csproj
文件 1454 2011-11-01 15:35 批量导入数据库(mysql实现)\DBAccessLib\Factory.cs
文件 15788 2012-01-09 17:00 批量导入数据库(mysql实现)\DBAccessLib\MySqlAccess.cs
文件 645 2012-01-09 17:00 批量导入数据库(mysql实现)\DBAccessLib\obj\Debug\DBAccessLib.csproj.FileListAbsolute.txt
文件 13824 2012-01-09 17:00 批量导入数据库(mysql实现)\DBAccessLib\obj\Debug\DBAccessLib.dll
文件 46592 2012-01-09 17:00 批量导入数据库(mysql实现)\DBAccessLib\obj\Debug\DBAccessLib.pdb
文件 15898 2011-11-03 11:32 批量导入数据库(mysql实现)\DBAccessLib\OracleAccess.cs
文件 1360 2012-01-09 16:54 批量导入数据库(mysql实现)\DBAccessLib\Properties\AssemblyInfo.cs
............此处省略31个文件信息
- 上一篇:生命游戏C#
- 下一篇:C#TCP 通信(TCP发送16进制)
相关资源
- C#TCP 通信(TCP发送16进制)
- 生命游戏C#
- C# 五子棋程序 附带编程日记
- C#网络三子棋
- c#记事本 完整版(附源码)
- C# pictureBox控件开打和另存为图像(附
- C#创建word并保存
- C# 操作并口
- C# 读取USB 信息
- C#有界面局域网DES UDP加密通讯程序
- c#记事本 基本功能已经全部实现 包附
- C# Socket Tcp文件传输和文字聊天系统
- 逐步法线性回归C#源码
- C# winform实现表数据导出到Excel表格
- C#单像空间后方交会
- C#多窗口记事本可查找替换
- 北大青鸟ACCP8.0S1使用C#开发数据库应用
- 用C#做的鲜花管理系统
- c#读取txt(cs、html)文件
- C#实现二叉树基本操作,排序,计算和
- C#编写的后方交会程序
- C#面试总结绝对好用
- C#四则运算Windows界面
- C#winfrom漂亮的登陆界面
- 文本替换工具c#版附源码
- C#写的键盘和鼠标记录程序(记录你点
- 连连看游戏C#源码有提示和洗牌功能
- C#版千千静听(附源码能)
- 用WPF开发的多人聊天室 语言C#
- asp.net中c#做的躲避小游戏,希望大家
评论
共有 条评论