SqlBulkCopy 快速插入数据】的更多相关文章

[转]本文来自http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlbulkcopy(v=vs.80).aspx 此代码用于演示仅使用 SqlBulkCopy 的语法.如果源表和目标表都在同一个 SQL Server 实例中,则使用 Transact-SQL INSERT … SELECT 语句复制数据会更方便快捷. using System.Data.SqlClient; class Program { static…
C#中批量处理数据,有时候因为一条记录导致整个批量处理失败.这时候肯能会导致数据不全等问题,这时候我们可以使用SqlTransaction来进行事务回滚,即是要么全部成功要么全部不成功.如下代码 //测试事务回滚 public static string GetMsgBySJ() { var msg = ""; SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = conn.CreateCommand();…
因为需要大量插入数据,linq ef无法达到速度的要求,因此把模型转换成SQL ,使用SqlBulkCopy快速插入.但是去提示 来自数据源的 String 类型的给定值不能转换为指定目标列的类型 smalldatetime 排查了很久才发现,模型的字段顺序和表的字段顺序不一致,导致varchar类型的数据对应成了smalldatetime的数据而造成了溢出.…
通常,我们会对于一个文本文件数据导入到数据库中,不多说,上代码. 首先,表结构如下.   其次,在我当前D盘中有个文本文件名为2.txt的文件. 在数据库中,可以这样通过一句代码插入. Bulk insert T_Demo From 'D:\2.txt' With ( fieldterminator=',', rowterminator='\n' ) 1) bulk insert:  为Sql server 中一个批量插入的操作 2)T_Demo:   要插入的表 3)'D:\2.txt':  …
原文:SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法 在new SqlBulkCopy对象的时候,设置一下SqlBulkCopyOptions选项即可,按位或运算 SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints using (SqlBulkCopy bulkCopy = new SqlBulkCopy(GlobalString.ConnectionString, SqlBulkCopy…
在C#中,我们可以使用sqlBulkCopy去批量插入数据,其他批量插入方法不在讨论. 1 /// <summary> 2 /// SqlBulkCopy批量插入数据 3 /// </summary> 4 /// <param name="connectionStr">链接字符串</param> 5 /// <param name="dataTableName">表名</param> 6 ///…
static void Main(string[] args) { //定义与目标表结构相同的DataTable DataTable dataTable = new DataTable(); dataTable.Columns.Add(new DataColumn() { ColumnName = "EmployeeId", DataType = System.Type.GetType("System.String") }); dataTable.Columns.A…
首先创建一个数据库连接类:SQLHelper using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; namespace insetData { public class SQLHelper { public static readonly string Strconn = "Data…
因为项目使用Presto作为ETL使用,需要将关系库中的数据导入到Hive中.目前关系库中的数据每天导入一次,在Hive中以天为间隔创建新的分区.思路是正确的,但是在使用的过程中,发现将少量关系库中的数据通过Presto快速并多次导入到Hive中时会出现如下错误: com.facebook.presto.spi.PrestoException: Unable to rename from hdfs://cloud171:8020/tmp/presto-root/34923b62-7933-46f…
dt信息中包含数据和表名 public static void SqlBulkInsert(DataTable dt, string connStr) { try { using (var conn = new SqlConnection(connStr)) { try { conn.Open(); using (var bulkcopy = new SqlBulkCopy(connStr, SqlBulkCopyOptions.UseInternalTransaction)) { //批量插入…
SqlBulkCopy是.NET Framework 2.0新增的类,位于命名空间System.Data.SqlClient下,主要提供把其他数据源的数据有效批量的加载到SQL Server表中的功能.类似与 Microsoft SQL Server 包中名为 bcp 的命令行应用程序.但是使用 SqlBulkCopy 类可以编写托管代码解决方案,性能上优于bcp命令行应用程序,更优于如Insert方式向SQL Server表加载大量数据.SqlBulkCopy可以应用到大批量数据的转移上,而不…
具体代码如下: /// <summary> /// 批量插入数据到BayonetZipFailedPic表 /// </summary> /// <param name="bayonetFailedPicList">含有多条拷贝失败的二次卡口图片数据的集合</param> /// <returns>0-成功,-2-异常,其他-失败</returns> public int BatchAddBayonetZipFai…
1:用merge into 进行匹配更新和插入,2: 开启并行,提高速度3: 如果可以的话加NOLOGING 不写入日志4:如果数据有规律的话,分批次执行 1.使用marge快速插入; MERGE /*+ append */   INTO A dUSING (select * B where ...) f    ON (d.account_no = f.account_no)WHEN MATCHED THEN    update set acc_date = f.acc_date,...WHEN…
/// <summary> /// 使用SqlBulkCopy将DataTable中的数据批量插入数据库中 /// </summary> /// <param name="strTableName">数据库中对应的表名</param> /// <param name="dtData">数据集</param> /// <param name="dicFields">…
前言: 日常学习和工作中,经常会遇到导数据的需求.比如数据迁移.数据恢复.新建从库等,这些操作可能都会涉及大量数据的导入.有时候导入进度慢,电脑风扇狂转真的很让人崩溃,其实有些小技巧是可以让导入更快速的,本篇文章笔者会谈一谈如何快速的导入数据. 注:本篇文章只讨论如何快速导入由逻辑备份产生的SQL脚本,其他文件形式暂不讨论. 1.尽量减小导入文件大小 首先给个建议,导出导入数据尽量使用MySQL自带的命令行工具,不要使用Navicat.workbench等图形化工具.特别是大数据量的时候,用My…
用原始Insert方法太慢,网上找到了https://www.cnblogs.com/yisen-code/p/6897524.html 思路是: 开启事务,开启预处理,然后把SQL用参数传入具体值来快速写入数据,本地测试,2W条写入本地不到1秒. 分享给大家 public void Quick_HG_Insert(DataTable dt) { try { var conn = GetConnection(); using (var dbTrans = conn.BeginTransactio…
废话不多说,直接上代码 /// <summary> /// 海量数据插入方法 /// </summary> /// <param name="connectionString">目标连接字符</param> /// <param name="TableName">目标表</param> /// <param name="dt">源数据</param>…
批量插入 Datetable数据  通过sqlbulkcopy 插入1百万条数据 用时 10秒钟 (有兴趣的小伙伴可以去测试) /// <summary> /// /// </summary> /// <param name="connectionStr">连接字符串</param> /// <param name="dataTableName">数据库表名称</param> /// <p…
参考代码如下: public class Examination { #region 批量插入一个sheet的专业对应的学科 /// <summary> /// 批量插入一个sheet的专业对应的学科 /// </summary> /// <param name="dt">传入的专业学科信息DataTable</param> public void ImportExamination(DataTable dt) { using (SqlC…
BULK INSERT以用户指定的格式复制一个数据文件至数据库表或视图中. 语法: BULK INSERT [ [ 'database_name'.][ 'owner' ].]{ 'table_name' FROM 'data_file' } WITH ( [ BATCHSIZE [ = batch_size ] ], [ CHECK_CONSTRAINTS ], [ CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ] ], [ DATAFILE…
在将txt文本格式的数据导入到数据库中时候,使用的是SqlBulkCopy.但是出现了多处错误,在网上查到得资料如下: 错误一:来自数据源的 String 类型的给定值不能转换为指定目标列的类型 nvarchar. 还有其他的错误如:AddTime不能为DBNull (这个应该是目标表中AddTime要求不许为null),哈哈,错误多了,都忘记了... 可能的原因有两种 可能是有"'"(单引号),替换成““”(双引号). 可能是目标表字段的长度比要导入的数据长度小. 错误二:给定的 C…
1.简单例子 class Program { static void Main(string[] args) { Stopwatch sw = new Stopwatch(); DataTable dt = GetTableSchema(); ; i < ; i++) { DataRow r = dt.NewRow(); //0行未自增列,为空就好 r[] = i; r[] = string.Format("User-{0}", i); r[] = (decimal)i; r[]…
具体实现步骤如下:(参考http://www.cnblogs.com/ivictor/p/5446503.html) 1. 新建一个文本文件redis_commands.txt,包含redis命令 SET Key0 Value0 SET Key1 Value1 ... SET KeyN ValueN 如果有了原始数据,其实构造这个文件并不难,譬如shell,python都可以 #!/usr/bin/python ): print 'set name'+str(i),'helloworld' 2.…
using System;using System.Collections.Generic;using System.Linq;using System.Text; using System.Data;using System.Data.SqlClient; namespace confirmBeiZhu{ class Program { static void Main(string[] args) { fabu(); } protected static void fabu() { Date…
本文为mariadb官方手册:How to Quickly Insert Data Into MariaDB的译文. 原文:https://mariadb.com/kb/en/how-to-quickly-insert-data-into-mariadb/ 我提交到MariaDB官方手册的译文:https://mariadb.com/kb/zh-cn/how-to-quickly-insert-data-into-mariadb/…
前言 当要向MariaDB中插入新的数据时,以下过程会影响插入所消耗的时间:(按时间消耗长短降序排序) 将数据sync到磁盘上(它是事务结束的一部分) 添加新的键值.索引越大,更新键值所消耗的时间就越长. 检查外键约束(如果存在). 将行添加到存储引擎中. 将待插入数据发送给服务器. 下面介绍几种向表中快速插入数据的技术(按效率的提升程度降序排序). 1. 禁用索引(key) 你可以临时禁用非唯一索引.特别是在表中数据很少甚至没有数据的时候,禁用非唯一索引可以极大提升插入速度. 多数存储引擎(至…
快速插入数据: 因为 MongoDB 的底层引擎是 JS 引擎,所以完全可以使用一些 Js 的语法.   for(var i=0;i<10000;i++){    db.ceshi.insert({_id:i+1,content:'aaaaaaa'+i}); }mysql 数据导出到 mongodb: 把 mysql 中的数据查询出来,json_encode(数据) 然后就可以插入到 mongodb 了(因为 mongodb 中的数据都是 json 格式的).…
一般情况下,我们手写sqlhelper类,在此类中定义一个数据插入到数据库的一个方法.将数据库连接密封在using()的语句中.using显示了Idispose接口.可以及时释放数据库连接资源.代码如下: //以下为方法中语句 using(Sqlconnection conn=new Sqlconnection(constr))//"constr"为连接字符串 { conn.Open(); using(SqlCommand cmd=conn.CreateCommand()) { cmd…
SqlBulkCopy类,为微软的一个大量数据快速插入.直接上代码 表结构: namespace SqlBulkCopy的演示 { using System.Data.SqlClient; public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //string connString…
批量的的数据导入数据库中,尽量少的访问数据库,高性能的对数据库进行存储. 采用SqlBulkCopy来处理存储数据.SqlBulkCopy存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储到数据库中,而不需要一次一次的向数据库Insert数据. 经过几次实验,百万级别的数据表,也只需几秒时间内就可以完全的存入数据库中,其速度,比传统的Insert into方法不止快很多倍. 下面看代码: /// <summary> /// 批量插入数据 /// </summary> /…