这里的批量插入,主要是支持SQL的大型存储数据库,本文以Mysql,Oracle,SqlServer,postgresql4类来说明,这大概是国内应用比较多的了。其余的应该可以按照这些去找。提到编程的话,主要是指c#.当然我不是dba,是程序员,所以说的是编程开发的手段而不是dba的手段。也希望大家留言比较。

先说说我们常用的几种方法,我就不列举代码了。网上都有,大家可以自己试试。

1.事务

开启一个事务,将多条语句执行,然后提交。有的数据库限制sql个数1000.

2.多值插入语法

insert into table(字段) values(字段值),(字段值).

这种语法也是一种批量插入,经过数据库(驱动)的优化.

但是sqlserver是个特殊,它的语法是insert all

insert all into table (字段) values(字段值)

insert table  (字段) values(字段值)

insert table  (字段) values(字段值)

3.专门的批量处理类

一般数据库都有一个批量类处理,我查看了几个例子,都是把datatable直接写入了。

一般类名称中带有Bulk字样。也是优化过的

4.文件导入

很多数据库支持csv,就单独以csv格式文件为准吧。

数据库提供有自己的办法,就当前说的几类数据库都有。

oracle是特殊的,其它几种都是命令行,可以用执行SQL的方式执行。但是oracle是工具命令行,也就是专门的一个工具来支持(工具是sqlldr ),所以oracle需要完整的客户端支持,至少是包含sqlldr.exe的客户端。oracle使用编程操作时,需要用bat文件或者启动sqlldr.exe方式来操作。

5.参数化

直接SQL参数化,参数化时设置行数。参数值采用数组,但是每个字段的值素组长度必须一样,比如一次插入1000行,每个素组必须是1000长度。我知道oracle是支持的,其它数据库未知,所以要自己尝试,可能不通用。

只给大家提供一个思路,就不一一说明了。至于这几种的处理速度,我就没有发言的了,我没有测试。希望大家留言给我答案。

尤其是第5种方法,我长期使用oracle,其余几种没有,也不打算弄一堆数据库测试,靠大家努力吧。

基于编程开发处理,上面不管哪种方法,都是在自己的数据库访问层或者ORM框架中,就不多说了。可以留言。

如果还有其它批量处理的方式,或者大家对几种方式的速度有比较和测试,或者有其它数据库其它的处理方式,请留言,我们一起讨论研究下。

附录转换处理类

数据库 驱动 名称 说明
oracle

Oracle.DataAccess

OracleBulkCopy

 
mysql 默认 MySqlBulkLoader  
postgresql 默认 没有直接的类。数据库连接类中有一个方法BeginBinaryImport 网上有一个扩展bulk
sqlserver 默认 SqlBulkCopy  

附录文件导入

数据库 语句 驱动 说明
oracle sqlldr dbuser/dbpass@dbservice control=users.ctl 默认  
mysql LOAD DATA LOCAL INFILE '/var/lib/mysql/pet.txt' INTO TABLE tbl_pet 默认  
postgresql COPY mytable FROM '/myfile.csv'  WITH CSV  HEADER 默认  
sqlserver

BULK

  INSERT Employee

  FROM 'F:\\MyPublis\\TestToInsert.txt' --location with filename

  WITH

  (

  FIELDTERMINATOR = ',',

  ROWTERMINATOR = '\n'

  )

默认  

聊聊编程开发的数据库批量插入(sql)的更多相关文章

  1. SQL:数据库批量插入数据

    测试中有些功能要求有足够的数据进行测试,当输入字段较多时通过页面添加很慢.业务只关联单个数据库表可以通过数据库批量插入数据 批量插入数据示例: declare @i int--声明变量 --变量初始化 ...

  2. C# 数据库批量插入数据之 —— SqlBulkCopy、表值参数

    创建了一个用来测试的Student表: CREATE TABLE [dbo].[Student]( [ID] [int] PRIMARY KEY NOT NULL, ) NULL, ) NULL, [ ...

  3. Python批量插入SQL Server数据库

    因为要做性能测试,需要大量造数据到数据库中,于是用python写了点代码去实现,批量插入,一共四张表 简单粗暴地插入10万条数据 import pymssql import random __auth ...

  4. MySQL、Oracle批量插入SQL的通用写法

    举个例子: 现在要批量新增User对象到数据库USER表中 public class User{ //姓名 private String name; //年龄 private Integer age; ...

  5. SqlBulkCopy高效能批量插入SQL SERVER

    what SqlBulkCopy是.NET提供的用来批量插入数据的一个类,特别是将内存中的数据一次性插入到数据库,目前只能插入到SQL SERVER数据库,数据源可以是DataTable.IDataR ...

  6. (转)批量插入sql语句

    为了减少数据库连接的I/O开销,一般会把多条数据插入放在一条SQL语句中一次执行.1.INSERT INTO TABLE(col1, col2) VALUES(val11, val12), (val2 ...

  7. ASP.NET(C#) 使用 SqlBulkCopy 实现批量插入SQL(快捷简单)

    业务需要,系统在处理数据时,每暂存一列数据将他插入到右侧的表格中,再执行批量保存,如图所示: //以前的做法可能是生成一堆 insert into xx values xxx 的sql语句,在程序中去 ...

  8. MYSQL开发性能研究——批量插入的优化措施

    一.我们遇到了什么问题 在标准SQL里面,我们通常会写下如下的SQL insert语句. INSERT INTO TBL_TEST (id) VALUES(1);   很显然,在MYSQL中,这样的方 ...

  9. oracle的批量插入sql

    insert into persons (id_p, lastname , firstName, city ) values (200,'haha' , 'deng' , 'shenzhen'), ( ...

随机推荐

  1. Lambda多表联合

    var query = database.Posts // your starting point - table in the "from" statement .Join(da ...

  2. MUI框架-13-使用百度地图 API(图文教程)

    MUI框架-13-使用百度地图 API(图文教程) 后面有实例,转载请注明出处 一.申请百度地图权限 1.打开 百度地图开放平台:http://lbsyun.baidu.com/apiconsole/ ...

  3. Web前端和后端开发的区别和要求

    Web前端和后端开发的区别和要求 有时候自己会分不清,其实是因为前后端都了解,类似于全栈工程师,但又什么都不是很精通.那到底什么是前端.后端呢,我整理了一些企业要求级别的前端/后端基础,开发框架等. ...

  4. TCP状态统计 - 脚本命令

    一.netstat命令说明 netstat常见参数 -a (all)显示所有选项,默认不显示LISTEN相关 -t (tcp)仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示 ...

  5. zabbix fast

    源码安装步骤 来源它站: 官方文档:https://www.zabbix.com/documentation/2.4/manual/installation/install#from_the_sour ...

  6. .net core系列之《.net core中使用MySql以及Dapper》

    当我们决定使用.Net Core开发的时候,就放弃使用SqlServer的打算吧.那应该选择哪个数据库呢?一般选择MySql的比较多. 接下来我们来演示在.Net Core中使用MySQL吧. 1.原 ...

  7. C#操作GridView控件

    GridView控件是一个visualStudio自带的数据控件,它可以非常快速的将数据以表格方式显示在web页面上.下面就是一个利用GridView控件进行数据绑定的小例子,内容如下: 数据来源自一 ...

  8. HBuilder设置APP状态栏

    一. 前言 状态栏就是手机屏幕最顶部的区域,包括了:信号.运营商.电量等信息.通常APP都有属于自己的色调风格,为了达到整体视觉美观,通常会设置状态栏和标题栏的色调设置成一致. 图例: 二.状态栏状态 ...

  9. 企业级Apache详解2

    http_conf主配置说明 root@lamp01 apache]# grep -Ev "#|^$" conf/httpd.conf DocumentRoot "/us ...

  10. 在Windows10中破解一些软件

    在Windows10中破解一些软件 一.前言   以前的windows是很好破解的,这里说的windows包含了windows的一些产品,比如说office,visio等等,可是自从到了新版的wind ...