Orcale 数据加载
CSV 逗号分隔值格式文件
1,若要加载的文件不是CSV格式,可以修改数据文件,用分隔符来替换逗号;也可以修改控制文件,将FIELDS TERMINATED BY的值改为实际的分隔符。
eg, 要向scott.bonus表插入数据 **.dat.
1. SMITH,CLEAK,3904
2. ALLEN,"SALER,M",2891
3. WARD,"SALER,""S""",3128
4. KING,PRESIDENT,2523
LOAD DATA
INFILE **.dat
TRUNCATE INTO TABLE BONUS
FIELDS TERMINATED BY "," OPTIONALLOY ENCLOSED BY '"'
(ENAME, JOB, SAL)
save as ldr_case2.ctl
运行SQLLDR:
> sqlldr scott/tiger control= ldr_case2.ctl
2,若数据文件没有分隔符,但是定长字符串。 使用position 关键字来指定列的开始和结束位置。 如:
position(7:15 )从第7个字符开始截止到第15个字符作为ENAME列的列值。
position(*+2:15) *号代表相对偏移量,从上次结束的位置+2的地方开始。
position(*)char(9): 这种方式 只需为第一列指定开始位置,其他列只需要指定列长度即可。
1. LOAD DATA
2. INFILE ldr_case3.dat
3. TRUNCATE INTO TABLE BONUS
4. (
5. ENAME position(1:5),
6. JOB position(7:15),
7. SAL position(17:20)
8.)
SQL> DESC BONUS; //查看表结构
3,若数据文件中的列少于将要导入的表的列。在控制文件中加入 COMM “0” 即可。
4,若数据文件中的列多于将要导入的表的列,
方式一: 修改数据文件,将多余的数据删除(使用于小数据量)
方式二: 如1. SMITH 7369 CLERK 800 20
2. ALLEN 7499 SALESMAN 1600 30
希望导入1、3、4 列而跳过2、5列,

5,提供多个数据文件,要导入同一张表
指定多个INFILE参数即可。2前提是提供的数据文件中的数据存放格式必须完全相同。
6,同一个数据文件要导入不同的表,使用WHEN关键字。
需求是将以MGR开头的记录导入MANAGER表,以BON开头的记录导入BONUS表,其他记录存入废弃文件中,

注:控制文件中的WHEN逻辑判断不支持OR关键字,如果判断条件有多个,使用AND连接。
7,数据前N行不想导入。
可以使用文本工具修改数据文件,linux下可以通过tail命令实现。 若不想修改数据文件,则 SKIP参数。
SQL> SQLLDR SCOTT/TIGER CONTROL=LDR_CASE10.CTL SKIP=3 前3行不导入。
若 导入 4到6行, 则
SQL> SQLLDR SCOTT/TIGER CONTROL=LDR_CASE10.CTL SKIP=4 LOAD=6
8,要加载的数据中有换行符,复杂, 要sqlldr指明什么时候才进行换行操作。
eg手工指定换行符, 数据文件中的换行符不是标准的换行标志。而是用户自定义的一个标志字符。这种情况下”
LOAD DATA
INFILE ldr case11.dat
TRUNCATE INTO TABLE manager
FIELDS TERMINATED BY ","
(MGRNO MANAME,JOUB,TRMAK,
REMARK "replace(:remark, '\\n',chr(10))")
理论知识说完,实践下。
首先 cmd-> sqlplus dabook/dabook_localhost
连接dabook,
create table manager;

编辑 testData.csv 文件, 存放在E:\下。
12,Smith,manager,3600
13,Paul ,coder,3000
14,Lynn,tester,2000
编辑control文件:TEST01.CTL
LOAD DATA
INFILE 'E:\testData.csv'
INTO TABLE MANAGER
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
(MGRNO,MNAME,JOB,REMARK)
使用show parameter control_files;命令查看已有的control文件。为了找到control的路径。一般都放在一起比较好吧。

cmd> sqlldr system/D199033 control= E:\APP\DINGQI\ORADATA\TEST\DABOOK\TEST1.CTL 导入数据

。
在去select 下 ,发现数据就进去了!

PS:贴上我的Oracle安装地址

。 。。
Orcale 数据加载的更多相关文章
- AE数据加载
1. 数据加载问题: 任何系统都离不开数据的加载,下边就AE中几种常用的数据加载做一个列举.以便查阅: 1.加载个人数据库 个人数据库是保存在Access中的数据库.其加载方式有两种:通过名字和通过属 ...
- ScrollView嵌套ListView,GridView数据加载不全问题的解决
我们大家都知道ListView,GridView加载数据项,如果数据项过多时,就会显示滚动条.ScrollView组件里面只能包含一个组件,当ScrollView里面嵌套listView,GridVi ...
- python多种格式数据加载、处理与存储
多种格式数据加载.处理与存储 实际的场景中,我们会在不同的地方遇到各种不同的数据格式(比如大家熟悉的csv与txt,比如网页HTML格式,比如XML格式),我们来一起看看python如何和这些格式的数 ...
- flask+sqlite3+echarts3+ajax 异步数据加载
结构: /www | |-- /static |....|-- jquery-3.1.1.js |....|-- echarts.js(echarts3是单文件!!) | |-- /templates ...
- Entity Framework关联查询以及数据加载(延迟加载,预加载)
数据加载分为延迟加载和预加载 EF的关联实体加载有三种方式:Lazy Loading,Eager Loading,Explicit Loading,其中Lazy Loading和Explicit Lo ...
- JQuery插件:遮罩+数据加载中。。。(特点:遮你想遮,罩你想罩)
在很多项目中都会涉及到数据加载.数据加载有时可能会是2-3秒,为了给一个友好的提示,一般都会给一个[数据加载中...]的提示.今天就做了一个这样的提示框. 先去jQuery官网看看怎么写jQuery插 ...
- 如何评估ETL的数据加载时间
简述如何评估大型ETL数据加载时间. 答:评估一个大型的ETL的数据加载时间是一件很复杂的事情.数据加载分为两类,一类是初次加载,另一类是增量加载. 在数据仓库正式投入使用时,需要进行一次初次加载,而 ...
- 浅谈Entity Framework中的数据加载方式
如果你还没有接触过或者根本不了解什么是Entity Framework,那么请看这里http://www.entityframeworktutorial.net/EntityFramework-Arc ...
- 实现虚拟模式的动态数据加载Windows窗体DataGridView控件 .net 4.5 (一)
实现虚拟模式的即时数据加载Windows窗体DataGridView控件 .net 4.5 原文地址 :http://msdn.microsoft.com/en-us/library/ms171624 ...
随机推荐
- .Net Core微服务——网关(2):ocelot集成consul
有consul基础的都知道,consul可以发现新增的服务,剔除掉无效的服务,赋予应用自动伸缩的能力.而ocelot如果集成了consul,那ocelot也能拥有这些能力,还可以自主选择负载均衡策略, ...
- Fiddler抓包工具学习及使用
一.Fiddler工作原理 Fiddler是位于客户端和服务器端之间的代理,客户端发送请求,fiddler会拦截该请求,再转发到服务器端,服务器端处理请求做出的响应,也要被fiddler拦截,fidd ...
- 在代码生成工具Database2Sharp中增加Vue&Element 工作流页面的快速生成
在我们基于框架开发系统的时候,往往对一些应用场景的页面对进行了归纳总结,因此对大多数情况下的页面呈现逻辑都做了清晰的分析,因此在我们基于框架的基础上,增量式开发业务功能的时候,能够事半功倍.代码生成工 ...
- fabric运行记录
创建第一个fabric网络 Generate Network Artifacts cd first-network 先关闭服务 ./byfn.sh -m down 然后创建 ./byfn.sh -m ...
- oracle合并列的函数wm_concat的使用详解
oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oracle wm_concat(column)函数实现字段合并,如果您对oracle wm_concat( ...
- QT6 源码杂记
菜鸡一个,随便写写,勿喷.好记性不如烂笔头. 了解qt,第一个绕不过的坎便是qt的元对象系统 QMetaObject. 1 class Object : public QObject 2 { 3 Q_ ...
- 基于Guava API实现异步通知和事件回调
本文节选自<设计模式就该这样学> 1 基于Java API实现通知机制 当小伙伴们在社区提问时,如果有设置指定用户回答,则对应的用户就会收到邮件通知,这就是观察者模式的一种应用场景.有些小 ...
- 『学了就忘』Linux软件包管理 — 48、给源码包打补丁
目录 1.补丁的生成 2.补丁的打入 在以前的软件源码包,需要打补丁的时候比较多.现在的源码包很少进行打补丁了,因为根据需求安装不同的版本即可,比较商业化了.(也就是知道如何给源码包打补丁就可以了,了 ...
- [cf1528F]AmShZ Farm
考虑$a_{i}$是"more-equal"的组合意义,有以下构造-- 有$n$个位置,每一次选择一个位置$a_{i}$,在$a_{i}$之后(包括$a_{i}$)的第一个空位上停 ...
- [bzoj2756]奇怪的游戏
对棋盘黑白染色后,若n和m都是奇数(即白色和黑色点数不同),可以直接算得答案(根据白-黑不变):若n和m不都是奇数,二分答案(二分的上限要大一点,开$2^50$),最后都要用用网络流来判定.考虑判定, ...