SQL_loader批量上传数据

1.    注释

在工作中,很多时候会遇到如下情况:需要将excel中的数据批量上传到ORACLE表中。如果是小数据量,如几十条至几百条,那么用plsql dev工具,在查询命令后加上for update 然后解锁,把数据复制粘贴进去就可以了。

但如果遇到大数据量几万至几十万时,上述方法就不可行了。

如下介绍如何使用oracle自带的sqlloader上传数据。

2.    SQL_LOADER上传数据

2.1   sql_loader说明

sql*loader是oracle自带程序。需要上传数据的本机只要安装了oracle数据库或客户端就会自动集成该工具。但是不同的版本对控制文件的写法要求有所不同。具体可参见2.3节或者附件控制文件的内容。

2.2   编辑数据文件

要使用sql*loader,其数据文件必须是两种,一种是 *.txt 的文本文件,另一种是 *.csv的文件。例如,需要上传的数据是使用excel编辑的,那么只需要将excel另存为[制表符分割的 txt 文件]或者另存为[逗号分割的csv 文件]即可。如下图:

注意:CSV格式的文件打开后跟excel的样式差不多,但实际存储方式不一样。在磁盘上CSV格式的文件中每个格子中的数据使用逗号分割开存储的。

这样的存储方式很有用,方面后面写控制文件。控制文件在控制读取数据的时候直接以逗号为标记读取数据。其实,plsql dev在导出文件的时候就可选择存储为csv格式。

按照以上方法,数据文件就准备好了。

2.3   编写控制文件

控制文件其实就是SQL_LOADER上传数据时需要运行的脚本,其后缀名为ctl。控制文件写明了数据文件的位置、加载数据的方式、加载到哪个表、如何读取数据等信息。

下面是一段简单、完整的控制文件的截图及解释:

load data
infile 'D:\新建文件夹\存量zzjgdm.csv'
append
into table ZX_QYDJ_CL_ZZJGDM_2017
(
ZZJGDM terminated by ',',
ZCH terminated by ',',
QYMC terminated by ','
)

图注:编写控制文件时用文本文件编写好,修改后缀名为ctl即可。

2.4   SQL_LOADER导入数据

制作好了数据文件和控制文件,接下来就是把数据导入oracle表中。

接下来执行导入命令,如果数据库在本机则可执行:

Sqlldr scott/leedb control=c:\controlfile.ctl data=c:\datafile.csv

如果是远程数据库,则可执行:

Sqlldr scott/leedb@xwdb control=c:\controlfile.ctl data=c:\datafile.csv

Sqlldr scott/leedb@192.168.0.20:1521/xwdb control=c:\controlfile.ctl data=c:\datafile.csv

                                     (远程地址:端口/实例名称)

excel中的数据导入oracle方法的更多相关文章

  1. 使用Python将Excel中的数据导入到MySQL

    使用Python将Excel中的数据导入到MySQL 工具 Python 2.7 xlrd MySQLdb 安装 Python 对于不同的系统安装方式不同,Windows平台有exe安装包,Ubunt ...

  2. 使用openpyxl模块将Excel中的数据导入数据库

    这里将不介绍openpyxl模块的详细操作. 主要就是记录一个使用openpyxl模块将Excel表格的数据导入数据库中的实例. from openpyxl import load_workbook ...

  3. 把excel中的数据导入到Oracle数据库中

    从事工作以来,数据库一直使用oracle,却不知道excel导入oracle,今天看了一篇文章,分享给大家,希望对大家有用. https://jingyan.baidu.com/article/0f5 ...

  4. 用ttBulkCp把excel中的数据导入到timesten数据库中

    最近要做数据预处理,需要用到数据库.而且是以前从来没听说过的TimesTen. 首要目标是要把Excel里的数据,导入到TimesTen数据库中.而TimesTen在win10里用不了,于是我就在虚拟 ...

  5. c#.net Excel中的数据导入到SQL数据库中

    /// <summary>        /// 从Excel 导入学生        /// </summary>        /// <param name=&qu ...

  6. 详解用Navicat工具将Excel中的数据导入Mysql中

    第一步:首先需要准备好有数据的excel: 第二步:选择"文件"->"另存为",保存为"CSV(逗号分隔)(*.csv)",将exce ...

  7. 用JDBC把Excel中的数据导入到Mysql数据库中

    步骤:0.在Mysql数据库中先建好table 1.从Excel表格读数据 2.用JDBC连接Mysql数据库 3.把读出的数据导入到Mysql数据库的相应表中 其中,步骤0的table我是先在Mys ...

  8. 使用navicat for sqlserver 把excel中的数据导入到sqlserver数据库

    以前记得使用excel向mysql中导入过数据,今天使用excel向sqlserver2005导入了数据,在此把做法记录一下 第一步:准备excel数据,在这个excel中有3个sheet,每个she ...

  9. 把excel中的数据导入到数据库

    import.php <?php header("Content-Type:text/html;charset=utf-8"); echo '<html> < ...

随机推荐

  1. 关于JAVA中split方法使用竖线异常的问题

    split表达式,其实就是一个正则表达式. *  ^ | 等符号在正则表达式中属于一种有特殊含义的字符,如果使用此种字符作为分隔符,必须使用转义符即\\加以转义.不然分割的结果就不是你想要的.

  2. Javascript赋值语句中的“&&”操作符和"||"操作符

    有这么一种常见的语句: var a = a || 4; 那赋值语句中的"&&"操作符和"||"操作符是什么意思?如何知道这两个逻辑操作符两旁的数 ...

  3. STM32 Keil查看程序占用ROM和RAM

    1. 编译生成的map文件中code , RO ,RW, ZI 表示内容 Code为程序代码部分 RO-data 表示 程序定义的常量const temp; RW-data 表示 已初始化的全局变量 ...

  4. Python学习笔记基础篇——总览

    Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...

  5. 正则表达式之 match , findall, sub,subn

    #正则表达式之 match以及分组 import re #无分组 origin = "hello alex bcd alex lge alex avd 19" r = re.mat ...

  6. memcahced缓存特点

    1.key-value数据结构 2.所有数据保存在内存中 3.可以分布式集群 4.处理并发的机制是libevent事件机制 5.当内容容量达到指定值后,就基于LRU(Least Recently Us ...

  7. POJ 1952 BUY LOW, BUY LOWER

    $dp$. 一开始想了一个$dp$做法,$dp[i][j]$表示前$i$个数字,下降序列长度为$j$的方案数为$dp[i][j]$,这样做需要先离散化然后用树状数组优化,空间复杂度为${n^2}$,时 ...

  8. ES 6 : Math对象的扩展

    ES6在Math对象上新增了17个与数学相关的方法.所有这些方法都是静态方法,只能在Math对象上调用. 1.Math.trunc() Math.trunc方法用于去除一个数的小数部分,返回整数部分. ...

  9. 为什么Intent传递对象的时候必须要将对象序列化呢?

    Intent可以算是四大组件之间的胶水,比如在Activity1与Activity2之间传递对象的时候,必须要将对象序列化, 可是为什么要将对象序列化呢? Intent在启动其他组件时,会离开当前应用 ...

  10. 【Python】协程实现生产者消费者模型

    协程的实现为协作式而非抢占式的,这是和进程线程的最大区别.在Python中,利用yield和send可以很容易实现协程. 首先复习下生成器. 如果一个函数使用了yield语句,那么它就是一个生成器函数 ...