• 大小: 88.96 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-11-08
  • 语言: C#
  • 标签: C#  sql  批量  数据库  

资源简介

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个文件信息

评论

共有 条评论