ORACLE导入大量数据的两种方式比较

时间:2022-09-07 08:17:21

不管是开发还是测试,工作中经常需要去批量新增测试数据,但是大量数据的新增速度有时候让我们苦不堪言,下面通过两种方式完成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导入大量数据的两种方式比较的更多相关文章

  1. 【代码笔记】iOS-向服务器传JSON数据的两种方式

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...

  2. angular学习笔记&lpar;三&rpar;-视图绑定数据的两种方式

    绑定数据有两种方式: <!DOCTYPE html> <html ng-app> <head> <title>2.2显示文本</title> ...

  3. C&plus;&plus;读取字符串数据的两种方式

    C++读取字符串数据的两种方式 对于同样的样例输入: ladder came tape soon leader acme RIDE lone Dreis peat ScAlE orb eye Ride ...

  4. easyUI之datagrid绑定后端返回数据的两种方式

    先来看一下某一位大佬留下的easyUI的API对datagrid绑定数据的两种方式的介绍. 虽然精简,但是,很具有“师傅领进门,修行靠个人”的精神,先发自内心的赞一个. 但是,很多人和小编一样,第一次 ...

  5. SparkStreaming获取kafka数据的两种方式:Receiver与Direct

    简介: Spark-Streaming获取kafka数据的两种方式-Receiver与Direct的方式,可以简单理解成: Receiver方式是通过zookeeper来连接kafka队列, Dire ...

  6. SparkStreaming与Kafka,SparkStreaming接收Kafka数据的两种方式

    SparkStreaming接收Kafka数据的两种方式 SparkStreaming接收数据原理 一.SparkStreaming + Kafka Receiver模式 二.SparkStreami ...

  7. oracle删除表数据的两种的方式

    转自:https://blog.csdn.net/qq_37840993/article/details/82490787 平时写sql中我们都会用到删除语句,而平时删除表数据的时候我们经常会用到两种 ...

  8. oracle 插入表数据的4种方式

      1.往表中插入一整行数据 /*方法一*/ INSERT INTO 表名 VALUES(val1,val2,val3,...); /*方法二*/ '; 如: ,, FROM DUAL; 注意: 2. ...

  9. Java解析Json数据的两种方式

    JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据. 使用以上两种方式解析json ...

随机推荐

  1. pycharm的使用破解和Anaconda的使用

    1.pycharm的破解: 版本: pycharm 2016.2.3 链接: 下载专业版本   下面是这个版本的注册码: 43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTcz ...

  2. Ubuntu &period;&sol;configure 半途终止 导致没有生成makefile文件 解决方法

    在安装thrift的时候,解压包进入目录,执行命令: ./configure 之后,发现某些包没有安装,导致configure到一半的时候退出,接着make发现没有makefile文件.估计是我系统安 ...

  3. XPath注入笔记

    XPath注入 XQuery注入 测试语句:'or '1'='1 利用工具: Xcat介绍 Xcat是python的命令行程序利用Xpath的注入漏洞在Web应用中检索XML文档 下载地址:https ...

  4. Codeforces Round &num;337 Alphabet Permutations

    E. Alphabet Permutations time limit per test:  1 second memory limit per test:  512 megabytes input: ...

  5. SQL Server 2008 数据库日志文件丢失处理方法

    当数据库发生这种操作故障时,可以按如下操作步骤可解决此方法,打开数据库里的Sql 查询编辑器窗口,运行以下的命令. 1.修改数据库为紧急模式 ALTER DATABASE Zhangxing SET ...

  6. springMVC 多方法controller

    1. 新建web project 2. 加入jar包 3. 写web.xml <?xml version="1.0" encoding="UTF-8"?& ...

  7. javascript中类的属性访问权限研究&lpar;1&rpar;

    本篇文章主要针对javascript的属性进行分析,由于javascript是一种基于对象的语言,本身没有类的概念,所以对于javascript的类的定义有很多名字,例于原型对象,构造函数等,它们都是 ...

  8. 加域电脑登陆系统后桌面文件丢失,登录系统提示用户名为&OpenCurlyDoubleQuote;Temp”。

    注册表中定位到“HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion\\\\ProfileList”, ...

  9. 【web渗透技术】渗透攻防Web篇-SQL注入攻击初级

    [web渗透技术]渗透攻防Web篇-SQL注入攻击初级 前言不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的S ...

  10. 【转帖】远程显示&lpar;操作&rpar; 服务器 GUI 程序&lpar;图形化界面&rpar; &lpar;基于 X11 Forwarding &plus; Centos &plus; MobaXterm&rpar;

    远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm) https://zhuanlan.zhihu.com/p/310 ...