首页 > 数据库技术 > 详细

SQL Server 批量导入 bulk insert

时间:2021-02-18 23:23:43      阅读:29      评论:0      收藏:0      [点我收藏+]

在我们开发过程中,有时会遇到百万级别甚至更多的数据导入。比如我们需要将一百万条数据从csv文件导入到数据库中,此时,如果我们使用普通的 INSERT 语句执行,会非常影响效率,因为每插入一条数据,数据库都需要完整的走一遍 日志啦等等流程。使用bulk insert 会帮助我们提高效率。

我们可以使用 C# 中的 SqlBulkCopy。在这里我提供一个实例供大家参考。我们定义的 vocabularyLookupTable 的字段和类型应该与数据库中的定义一致。

var vocabularyLookupTable = new DataTable();
            vocabularyLookupTable.Columns.AddRange(
                new[]
                {
                    new DataColumn("VocabularyLookupKey", typeof(Guid)),
                    new DataColumn("CustomerSystemName", typeof(string)),
                    new DataColumn("CustomerTableName", typeof(string)),
                    new DataColumn("CustomerColumnName", typeof(string)),
                });
            var vocabularyLookupRow = vocabularyLookupTable.NewRow();
            vocabularyLookupRow["VocabularyLookupKey"] = key;
            vocabularyLookupRow["CustomerSystemName"] = "MIHMS";
            vocabularyLookupRow["CustomerTableName"] = "PUB_CLM_claimpharm";
            vocabularyLookupRow["CustomerColumnName"] = "ndckey";
            vocabularyLookupTable.Rows.Add(vocabularyLookupRow); 

var connectionBuilder = new SqlConnectionStringBuilder
            {
                DataSource = ".",
                InitialCatalog = "DatabaseName",
                IntegratedSecurity = true,
                Encrypt = false,
                TrustServerCertificate = true,
                ConnectTimeout = 100000,
            };
            var sqlConnection = new SqlConnection(connectionBuilder.ToString());
            sqlConnection.Open();
            var transaction = sqlConnection.BeginTransaction();

            var bulkInsertVocabularyLookup = new SqlBulkCopy(
                sqlConnection,
                SqlBulkCopyOptions.Default,
                transaction)
            {
                DestinationTableName = "[InterfaceModule].[VocabularyLookup]",
                BulkCopyTimeout = 100000,
            };
            bulkInsertVocabularyLookup.WriteToServer(vocabularyLookupTable);
            transaction.Commit();

 

SQL Server 批量导入 bulk insert

原文:https://www.cnblogs.com/xinyublog/p/14412928.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!