ORACLE导入大量数据的两种方式比较
不管是开发还是测试,工作中经常需要去批量新增测试数据,但是大量数据的新增速度有时候让我们苦不堪言,下面通过两种方式完成oracle数据的批量新增,比较两种方式的效率。
第一种方式:采用工具导入sql文件
以10w条数据为例,通过java程序生成insert语句,采用sqlplus进行导入
1、通过简单的JAVA程序生成sql脚本
public class GenerateSQLFile {
public static void main(String[] args) throws Exception {
File file = new File("d:" + File.separator + "data.sql");
OutputStream out = new FileOutputStream(file, true);
for (int i = 1; i <= 100000; i++) {
String str = "insert into t_test(id,name) values(" + i
+ ",'hello world" + i + "');\r\n";
byte b[] = str.getBytes();
out.write(b);
}
out.close();
}
}
执行程序,生成的sql脚本如下所示:
insert into t_test_1(id,name) values(1,'hello world1');
insert into t_test_1(id,name) values(2,'hello world2');
insert into t_test_1(id,name) values(3,'hello world3');
... ...
2、新建表,导入数据
以scott/tiger登录sqlplus;
新建t_test表:create tablet_test_1(id int,name varchar2(255));
创建表成功后执行:@D:\data.sql,逐行插入数据
3、测试结果
以sqlplus执行sql脚本导入10W条数据的时间大约是5分钟
第二种方式:采用sql loader工具
sql loader可以将文本格式存放的数据导入到oracle,是一个进行数据迁移的非常方便而且通用的工具。
下面通过java程序生成csv文件,以100万条测试数据为例,通过sql loader进行数据导入
期望生成的csv数据文件格式如下:
1,hello1
2,hello2
3,hello3
... ...
1、生成数据文件
100万条数据的csv文件同样由java程序生成:
File file = new File("d:" + File.separator + "data.csv"); // 要操作的文件
OutputStream out = null; // 声明字节输出流
out = new FileOutputStream(file, true);
for (int i = 1; i <= 100000; i++) {
String str = i+","+"hello"+i+"\r\n";
byte b[] = str.getBytes();
out.write(b);
}
out.close();
2、创建表格t_test_2
create table t_test_2(id varchar2(255),name varchar2(255));
3、建立控制文件test.ctl,脚本如下
load data
infile data.csv
into table t_test_2
(
id char terminated by ',',
name char terminated by whitespace
)
参数说明:
Infile data.csv: 指定数据源文件 这里我们省略了默认的 discardfile result.dsc badfile result.bad
into table t_test_2:默认是INSERT,也可以into table resultxt APPEND为追加方式,或REPLACE
terminated by ',':指用逗号进行字段的分隔
terminated by whitespace: 表示结尾以空白分隔
其它参数参考可使用命令:d:\>sqlldr
4、导入数据:
将test.ctl文件和data.csv文件放置在D盘根目录下,在命令行中运行:
D:\>sqlldr userid=scott/tiger control=test.ctl
5、测试结果:通过sql loader进行数据导入,10万条数据毫秒级导入,100万条数据耗时10秒
ORACLE导入大量数据的两种方式比较的更多相关文章
- 【代码笔记】iOS-向服务器传JSON数据的两种方式
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...
- angular学习笔记(三)-视图绑定数据的两种方式
绑定数据有两种方式: <!DOCTYPE html> <html ng-app> <head> <title>2.2显示文本</title> ...
- C++读取字符串数据的两种方式
C++读取字符串数据的两种方式 对于同样的样例输入: ladder came tape soon leader acme RIDE lone Dreis peat ScAlE orb eye Ride ...
- easyUI之datagrid绑定后端返回数据的两种方式
先来看一下某一位大佬留下的easyUI的API对datagrid绑定数据的两种方式的介绍. 虽然精简,但是,很具有“师傅领进门,修行靠个人”的精神,先发自内心的赞一个. 但是,很多人和小编一样,第一次 ...
- SparkStreaming获取kafka数据的两种方式:Receiver与Direct
简介: Spark-Streaming获取kafka数据的两种方式-Receiver与Direct的方式,可以简单理解成: Receiver方式是通过zookeeper来连接kafka队列, Dire ...
- SparkStreaming与Kafka,SparkStreaming接收Kafka数据的两种方式
SparkStreaming接收Kafka数据的两种方式 SparkStreaming接收数据原理 一.SparkStreaming + Kafka Receiver模式 二.SparkStreami ...
- oracle删除表数据的两种的方式
转自:https://blog.csdn.net/qq_37840993/article/details/82490787 平时写sql中我们都会用到删除语句,而平时删除表数据的时候我们经常会用到两种 ...
- oracle 插入表数据的4种方式
1.往表中插入一整行数据 /*方法一*/ INSERT INTO 表名 VALUES(val1,val2,val3,...); /*方法二*/ '; 如: ,, FROM DUAL; 注意: 2. ...
- Java解析Json数据的两种方式
JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据. 使用以上两种方式解析json ...
随机推荐
- 基于Mono和VSCode打造轻量级跨平台IDE
近期Visual Studio推出Mac版本号的消息迅速在技术圈里刷屏,当project师们最喜欢的笔记本电脑Mac,邂逅地球上最强大的集成开发环境Visual Studio的时候,会碰撞出如何精 ...
- Hadoop学习笔记(六):hive使用
1. 安装hive:上传apache-hive-2.1.1-bin.tar.gz文件到/usr/local目录下,解压后更名为hive. 2. 配置hive环境变量,编辑/etc/profile文件( ...
- 【EF6学习笔记】(八)更新关联数据
上一篇链接:EF学习笔记(七):读取关联数据 本篇原文链接:Updating Related Data 本篇主要考虑对于有关联的数据进行新增.删除.更新操作:比如Course .Instructor: ...
- HttpClientHelper
using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System ...
- web进修之—Hibernate 类型(4)
本片包含Hibernate的两种类型的简单介绍和集合类型的映射. Hibernate中的两种类型: Entity 自己掌控自己的生命周期,比如Person有addrss属性(关联到另外一张表).age ...
- MFC原理第二讲.MFC的初始化过程
MFC原理第二讲MFC的初始化过程 一丶简介 通过上一讲.我们手工模拟了一个MFC程序. 但是上一讲留下了疑问. 就是WinMain在哪.以及消息处理在哪里. 这一节主要就是讲解Winmain在哪里. ...
- 浅谈Web服务器和应用服务器的区别
1Web服务器和应用服务器简介 通俗的讲,Web服务器传送页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods).确切一点,你可以说:Web服务器专 ...
- lambda,linq
一:什么是Lambda表达式 lambda表达式是实例化委托的一个参数,就是一个方法,具体实现如下: { //.NetFramework 1.0-1.1的时候这样应用 NoReturnNoPara m ...
- C#常量和字段以及各种方法的语法总结
目录 一. 常量和字段.... 1 1. 常量.... 1 2.字段.... 1 二.方法.... 2 1.实例构造器和类(引用类型).... 2 2.实例构造器和结构(值类型).... 2 3.类型 ...
- .NET Framework 平台构造基础
CLR 公共语言运行库 执行给定编译代码单元所需的外部服务集合,它提供了一个定义明确的运行库层,可以被支持.NET的所有语言和平台所共享. 库 mscoree.dll:公共对象运行库执行引擎 当用户程 ...