在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」    MicrosoftSQLServer包含名为bcp的常用命令行应用程序,用于快速将大文件批量复制到SQLServer数据库的表或视图中。使用SqlBulkCopy类可以编写提供类似功能的托管代码解决方案。还可以通过其他方式将数据加载到SQLServer表中(例如INSERT语句),但是SqlBulkCopy提供的性能要明显优于这些方式。   

大家好,又见面了,我是你们的朋友全栈君。

 

    Microsoft SQL Server 包含名为 bcp 的常用命令行应用程序,用于快速将大文件批量复制到 SQL Server 数据库的表或视图中。使用 SqlBulkCopy 类可以编写提供类似功能的托管代码解决方案。还可以通过其他方式将数据加载到 SQL Server 表中(例如 INSERT 语句),但是 SqlBulkCopy 提供的性能要明显优于这些方式。

    SqlBulkCopy 类只能用于向 SQL Server 表中写入数据。但是,数据源不限于 SQL Server;可以使用任何数据源,只要数据可以加载到 DataTable 实例或使用 IDataReader 实例读取即可。

使用 SqlBulkCopy 类可以执行下列操作:

  • 单次批量复制操作

  • 多次批量复制操作

  • 事务中的批量复制操作

示例1: 单次批量复制操作

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
    
private
 
void
 sqlBulkCopy()
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」        


{

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//建立连接信息
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
            SqlConnectionStringBuilder sqlcsb = new SqlConnectionStringBuilder();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//sqlcsb.DataSource = “SQLProduction”;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//sqlcsb.InitialCatalog = “Sales”;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//sqlcsb.IntegratedSecurity = true;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
            sqlcsb.ConnectionString = @”data source=myDBServer;user id=sa;initial catalog=myDB;password=;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            SqlConnection SqlConn 
= new SqlConnection(sqlcsb.ConnectionString);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//建立获取数据命令
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//SqlCommand cmd = new SqlCommand(“SELECT * FROM SG4262010100007”, cnn);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//SqlConn.Open();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//SqlDataReader dataReader = cmd.ExecuteReader();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
string dbFile = @”C:/20071214.mdb;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            OleDbConnectionStringBuilder oleConStr 
= new OleDbConnectionStringBuilder();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            oleConStr.ConnectionString 
= Provider=Microsoft.Jet.OLEDB.4.0;Data Source= + dbFile +
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」                              
;User Id=admin;Password=;;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            OleDbConnection OleConn 
= new OleDbConnection(oleConStr.ConnectionString);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            OleDbCommand cmd 
= new OleDbCommand(select * from SG4262010100007 , OleConn);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            OleConn.Open();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            System.Data.OleDb.OleDbDataReader dataReader 
= cmd.ExecuteReader();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            SqlConn.Open();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            SqlTransaction transaction 
= SqlConn.BeginTransaction(); ;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
// 创建一个 SqlBulkCopy 对象.
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
            SqlBulkCopy bulkCopy = new SqlBulkCopy(SqlConn, SqlBulkCopyOptions.KeepIdentity, transaction);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            bulkCopy.BatchSize 
= 10;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            bulkCopy.BulkCopyTimeout 
= 500000000;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            bulkCopy.SqlRowsCopied 
+= new SqlRowsCopiedEventHandler(sbc_SqlRowsCopied);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            bulkCopy.NotifyAfter 
= 10;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//复制数据至目标对象
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
            bulkCopy.DestinationTableName = SG4262010100007;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
try
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
{

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」                bulkCopy.WriteToServer(dataReader);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」                transaction.Commit();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            }

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
catch (Exception err)
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
{

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」                transaction.Rollback();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」                
throw new Exception(err.ToString());
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            }

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
// 关闭所有的对象
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
            bulkCopy.Close();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            dataReader.Close();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            OleConn.Close();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            SqlConn.Close();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」        }


在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」        

void
 sbc_SqlRowsCopied(
object
 sender, SqlRowsCopiedEventArgs e)
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」        


{

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            showMsg(
已完成行数: + e.RowsCopied.ToString());
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」        }


在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」        

private
 
delegate
 
void
 showMsgDelegate(
string
 msg);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」        

private
 
void
 showMsgDel(
string
 msg)
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」        


{

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
this.myRichTextBox1.AppendText(msg + System.Environment.NewLine);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」        }


在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」        

private
 
void
 showMsg(
string
 msg)
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」        


{

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
this.BeginInvoke(new showMsgDelegate(showMsgDel), new object[] { msg });
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」        }

2.
 我们可以有选择性的从目标数据选取数据大批量复制至目标对象指定的字段中.

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
     
private
 
void
 HasSelSqlBulkCopy()
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」        


{

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//建立连接信息
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
            SqlConnectionStringBuilder sqlcsb = new SqlConnectionStringBuilder();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//sqlcsb.DataSource = “SQLProduction”;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//sqlcsb.InitialCatalog = “Sales”;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//sqlcsb.IntegratedSecurity = true;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
            sqlcsb.ConnectionString = @”data source=myDBServer;user id=sa;initial catalog=myDB;password=;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            SqlConnection SqlConn 
= new SqlConnection(sqlcsb.ConnectionString);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//建立获取数据命令
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//SqlCommand cmd = new SqlCommand(“SELECT * FROM SG4262010100007”, cnn);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//SqlConn.Open();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//SqlDataReader dataReader = cmd.ExecuteReader();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
string dbFile = @”C:/20071214.mdb;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            OleDbConnectionStringBuilder oleConStr 
= new OleDbConnectionStringBuilder();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            oleConStr.ConnectionString 
= Provider=Microsoft.Jet.OLEDB.4.0;Data Source= + dbFile +
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」                              
;User Id=admin;Password=;;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            OleDbConnection OleConn 
= new OleDbConnection(oleConStr.ConnectionString);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            OleDbCommand cmd 
= new OleDbCommand(select DATETIME,INFOTAG,MSGTEXT  from SG4262010100007 , OleConn);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            OleConn.Open();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            System.Data.OleDb.OleDbDataReader dataReader 
= cmd.ExecuteReader();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            SqlConn.Open();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            SqlTransaction transaction 
= SqlConn.BeginTransaction(); ;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
// 创建一个 SqlBulkCopy 对象.
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
            SqlBulkCopy bulkCopy = new SqlBulkCopy(SqlConn, SqlBulkCopyOptions.KeepIdentity, transaction);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            bulkCopy.BatchSize 
= 10;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            bulkCopy.BulkCopyTimeout 
= 500000000;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            bulkCopy.SqlRowsCopied 
+= new SqlRowsCopiedEventHandler(sbc_SqlRowsCopied);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            bulkCopy.NotifyAfter 
= 10;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//复制数据至目标对象
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
            bulkCopy.DestinationTableName = testtb;
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            bulkCopy.ColumnMappings.Clear();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
//设置源对象与目标对象的字段对应关系
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
            SqlBulkCopyColumnMapping column1 =
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」                          
new SqlBulkCopyColumnMapping(
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」                          
DATETIMEdate);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            bulkCopy.ColumnMappings.Add(column1);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            SqlBulkCopyColumnMapping column2 
=
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」                
new SqlBulkCopyColumnMapping(
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」                
INFOTAGflag);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            bulkCopy.ColumnMappings.Add(column2);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            SqlBulkCopyColumnMapping
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」                column3 
=
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」                
new SqlBulkCopyColumnMapping(
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」                
MSGTEXTmyValue);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            bulkCopy.ColumnMappings.Add(column3);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
try
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
{

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」                bulkCopy.WriteToServer(dataReader);
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」                transaction.Commit();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            }

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
catch (Exception err)
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
{

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」                transaction.Rollback();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」                
throw new Exception(err.ToString());
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            }

在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            
// 关闭所有的对象
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」
            bulkCopy.Close();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            dataReader.Close();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            OleConn.Close();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」            SqlConn.Close();
在事务中执行批量复制操作SqlBulkCopy,SqlTransaction「建议收藏」        }


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/140657.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • MyBatis中SqlSessionFactory和SqlSession简解

    MyBatis中SqlSessionFactory和SqlSession简解1.SqlSessionFactoryBuilder这个类可以被初始、使用和丢弃,如果你已经创建好了一个SqlSessionFactory后就不用再保留它。因此,SqlSessionFactoryBuilder的最好作用域是方法体内比如说定义一个方法变量。你可以重复使用SqlSessionFactoryBuilder生成多个SqlSessionFactory实例,但是最好不要强

  • vue网络图片url转Base64「建议收藏」

    vue网络图片url转Base64「建议收藏」单张图片转Base64<script>methods:{ //异步执行 imageUrlToBase64(){ //一定要设置为let,不然图片不显示 letimage=newImage(); //解决跨域问题 image.setAttribute(‘crossOrigin’,’anonymous’); let…

  • android的四大组件_android sdk是什么

    android的四大组件_android sdk是什么android四大组件分别为activity、service、contentprovider、broadcastreceiver。一、android四大组件详解1、activity(1)一个Activity通常就是一个单独的屏幕(窗口)。(2)Activity之间通过Intent进行通信。(3)android应用中每一个Activity都必须要在AndroidManif

    2022年10月22日
  • JavaScript基础知识全总结「建议收藏」

    JavaScript基础知识全总结「建议收藏」JavaScript基础浏览器说明浏览器是指可以显示网页服务器或者文件系统的HTML文件内容,并让用户与这些文件交互的一种软件。通俗的讲:可以显示页面的一个软件,国内网民计算机上常见的网页浏览器有,QQ浏览器、InternetExplorer、Firefox、Safari,Opera、GoogleChrome、百度浏览器、搜狗浏览器、猎豹浏览器、360浏览器、UC浏览器、傲游浏览器、世…

  • java测试案例编写方法_java实现自动化测试实例

    java测试案例编写方法_java实现自动化测试实例1.定义一个测试类(测试用例)1.1测试类名:被测试类的名字+Test比如UserServiceImplTest1.2测试类的包名:最后以.test结尾比如xxx.xx.test2.测试类中的测试方法2.1test+方法名比如testAdd2.2返回值建议void因为独立运行没有调用返回值没有意义2.3同上没有调用自然也不会有人传参参数建议…

    2022年10月10日
  • python aic准则_使用AIC进行变量选择并评估多元回归中的标准

    python aic准则_使用AIC进行变量选择并评估多元回归中的标准#MultipleRegressionVariableSelectiondefmr(selection=False):importosos.chdir(r’C:\Users\Path’)importpandasaspdh=pd.read_csv(‘Dataset.csv’,index_col=0)#print(h.head(0))#dataset’svariablenamesyva…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号