oracle 外部表装载,Oracle 原理:数据装载 ,SQLldr ,外部表
一、导入 SQLldr
SQL*LOADER可以把txt文件,Excel文件导入到数据库中。使用SQLloader导入导出需要一个数据文件和一个控制文件。数据文件中存了你需要导入的数据,控制文件中写你需要怎么导入这些数据。
LOAD DATA
infile 'e:\aa.csv' ## 源文件路径,路径不要包括中文
into table xx_temp ## 要导入的表
(
id terminated by whitespace ## id 为列名,whitespace 表示列之间使用空格来区分,如果是其他的 ‘|’ 方式则使用 terminated by '|' 逗号则用逗号.以此类推
)
## 换行 也是自动终止字段读的标识
其中 impcmd 中 可以被4个值替换分别是insert (缺省默认值),append,replace,truncate
insert: 插入数据,要求表为空
append:追加数据,在原来表的基础上再插入数据
replace :删除原表数据,再插入
truncate:删除原表数据,再插入,比replace 更高效
例如有这么张表
create table salary_tbl(
employer_nm varchar(20) ,
department varchar(20) not null,
salary number not null,
leader_nm varchar(20)
)
新建一个.txt文件用于存数据,可以自定义分隔符来区分字段
新建一个ctl 以字符 ' |' 分割
或者这样写更简便
load data
infile 'data1.txt'
into table SALARY_TBL append
fields terminated by '|'(
employer_nm ,
department ,
salary ,
leader_nm
)
在cmd执行 cd 到对应目录执行 ,执行完后可以查看对应位置log的内容
sqlldr userid=system/voapd@orcl control=control1.ctl log=11.log
在cmd 执行 sqlldr 可以查看sqlldr 的帮助
userid
ORACLE用户名/口令
control
控制文件名
log
日志文件名
bad
错误文件名
data
数据文件名
discard
废弃文件名
discardmax
允许废弃的文件的数目(全部默认)
skip
要跳过的逻辑记录的数目(默认0)
load
要加载的逻辑记录的数目(全部默认)
errors
允许的错误的数目(默认50)
rows
常规路径绑定数组中或直接路径保存数据间的行数(默认:常规路径64,所有直接路径)
bindsize
常规路径绑定数组的大小(以字节计)(默认256000)
silent
运行过程中隐藏消息(标题,反馈,错误,废弃,分区)
direct
使用直接路径(默认FALSE)
parfile
参数文件:包含参数说明的文件的名称
parallel
执行并行加载(默认FALSE)
file
要从以下对象中分配区的文件
skip_unusable_indexes
不允许/允许使用无用的索引或索引分区(默认FALSE)
skip_index_maintenance
没有维护索引,将受到影响的索引标记为无用(默认FALSE)
commit_discontinued
提交加载中断时已加载的行(默认FALSE)
readsize
读取缓冲区的大小(默认1048576)
external_table
使用外部表进行加载;NOT_USED,GENERATE_ONLY,EXECUTE(默认NOT_USED)
columnarrayrows
直接路径列数组的行数(默认5000)
streamsize
直接路径流缓冲区的大小(以字节计)(默认256000)
multithreading
在直接路径中使用多线程
resumable
启用或禁用当前的可恢复会话(默认FALSE)
resumable_name
有助于标识可恢复语句的文本字符串
resumable_timeout
RESUMABLE的等待时间(以秒计)(默认7200)
date_cache
日期转换高速缓存的大小(以条目计)(默认1000)
no_index_errors
出现任何索引错误时中止加载(默认FALSE)
PLEASENOTE
命令行参数可以由位置或关键字指定。前者的例子是'sqlldrscott/tigerfoo';后一种情况的一个示例是'sqlldrcontrol=foouserid=scott/tiger'。位置指定参数的时间必须早于但不可迟于由关键字指定的参数。例如,允许'sqlldrscott/tigercontrol=foologfile=log',但是不允许'sqlldrscott/tigercontrol=foolog',即使参数'log'的位置正确。
------------------------------------------
二、导出spool
在SQLplus 或在SQl命令行 输入
spool c:\test\spool.txt
select st.employer_nm||'|'||st.salary||'|'||st.department from salary_tbl st where LEADER_NM='雇佣者4';
spool off
就可以导出了
此时ctl 文件该怎么写才能正确导入呢 ?
其中 options skip 是选择跳过的行数 , 顺便使用支持中文导入的字符编码
options(skip=3)
load data
CHARACTERSET ZHS16GBK
infile 'spool.txt'
into table SALARY_TBL truncate
fields terminated by '|'(
employer_nm ,
salary ,
department
)
二、外部表
外部表的数据不装入数据库中,数据库中只存储外部表的定义。实际数据位于操作系统中的平面文件中。外部表只读,可以通过select 进行查询。外部表可以由数据泵引擎生成的外部表。也可以通过文本文件生成的外部表
create table salary_tbl_external(
employer_nm ,
department ,
salary ,
leader_nm
)
organization external -----指明外部表
(
type oracle_datapump --利用数据泵来创建
default directory MY_DIR --D:\DIRTEST1
location ('sal1.dmp','sal2.dmp')
) parallel
as
select salary_tbl.employer_nm,
salary_tbl.department,
salary_tbl.salary,
salary_tbl.leader_nm from salary_tbl
在MY_DIR 文件中有 SAL1.dmp 和SAL2.dmp文件。现在有了dmp文件可以通过外部表来创建外部表
create table salary_tbl_external2(
employer_nm varchar2(20) ,
department varchar2(20),
salary number,
leader_nm varchar2(20)
) organization external(
type oracle_datapump
default directory MY_DIR --D:\DIRTEST1
location ('sal1.dmp','sal2.dmp')
)
利用文本文件来创建外部表 现有txt文件
create directory C_test as 'C:\test';
--使用oracle_loader创建外部表,数据文件中每一行为数据行,字段按照 ‘|'划分
create table salary_tbl_external3(
employer_nm varchar2(20) ,
department varchar2(20),
salary number,
leader_nm varchar2(20)
) organization external(
type oracle_loader
default directory C_test
access parameters(
records delimited by newline
fields terminated by '|'
)
location ('data1.txt')
)
select * from salary_tbl_external3
就可以查询了。
注意: 如果在access parameters 中 注释一些没有用的代码,系统认为这是不符合规则的语句,会产生错误ORA-29913
oracle 外部表装载,Oracle 原理:数据装载 ,SQLldr ,外部表相关推荐
- java表单自动绑定数据_java工作流系统表单自动 获取数据
关键词:工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 bpm工作流系统 java工作流主流框架 自定义工作流引擎 表单设计器 流程设计器 什么是数据自动获 ...
- 将json数据写入html表单,将json数据提交到html表中
我需要基于json响应构建一个表,调用API时调用API, 调用API并让JSON工作正常,但我没有发现任何有关构建表的文档并从x.js传递给x.html.我成功地从json传递了1个参数/值.将js ...
- MySQL 定时任务event 按天建表 并将前一天数据导入新建的表中并删除总表数据 实现分表功能
需求:实现日志系统保存日志信息到数据库,由于日志信息量巨大,需要每天一张表来管理数据. 思路:总表不能改变,因为代码中SQL语句已经写死,表名不能改变;因此我们每天定时将总表数据导入到新表中,并将总表 ...
- jquery表单ajax json数据,jquery序列化form表单使用ajax提交后处理返回的json数据
1.返回json字符串: /** 将一个字符串输出到浏览器 */ protected void writeJson(String json) { PrintWriter pw = null; try ...
- mysql订单表上亿怎么分表_[转]单表上亿的数据量如何分表
之前的几篇关于分表的,提到的分表策略不够详细,我在这篇中补充一些分表策略吧: 按号段分: (1) user_id为区分,1-1000的对应table1,1001-2000的对应table2,以此类推, ...
- Oracle表明明存在SQL查询数据提示表不存在异常
今天同事遇到一个很奇怪的问题,恢复了一个数据库,表明明存在,用PLSQL和sqlplus都试过了,SQL语句select * from 表名,查询数据,却提示表名不存在异常 然而,使用select * ...
- oracle表 游标,Oracle游标表达式和表函数
Oracle游标表达式是Oracle数据库中的重要概念,下面就为您详细介绍Oracle游标表达式和表函数方面的知识,供您参考学习之用. Oracle游标表达式(有时称为游标子队列)是 SQL 语言的一 ...
- saiku+kettle整合(二)数据装载
title: saiku+kettle整合(二)数据装载 tags: OLAP4J categories: saiku date: 2016-08-25 18:18:54 数据装载 数据装载分为三种方 ...
- oracle stalestats_深入理解oracle优化器统计数据(Optimizer Statistics)
理解oracle优化器统计数据 首先来介绍oracle数据库使用基于规则优化器(RBO)来决定如何执行一个sql语句.基于规则优化器顾名思义,它是遵循一组规则来判断一个sql语句的执行计划.这组规则是 ...
- oracle r修改表名,oracle中修改表名
<<>> answer1: ALTER TABLE old_table_name RENAME TO new_table_name;(大写为系统命令) answer2: SQL ...
最新文章
- 是否顺应互联网大脑的发育趋势决定科技企业兴衰
- Spring Data JPA
- python中da_python学习 da4
- 详解虚函数的实现过程之虚基类(4)
- T-SQL 编程之结果集循环处理
- 2、Flutter 的安装和idea配置
- Centos 安装 jdk 和配置环境变量
- Open images from USB camera on linux using V4L2 with OpenCV
- 汇编工具安装三:已经配置好的汇编开发工具!
- android 实现异步加载图片,Android中ImageView异步加载图片类
- 实验8 群体类、流类库与输入/输出(4学时)
- 结合工作经历推荐新手编程语言
- [转载] Python 列表(List)
- http2-frame-WINDOW_UPDATE
- Chrome firefox ie等浏览器空格nbsp;宽度不一样
- win10字体模糊设置
- 接口测试 Jmeter面试题
- 多线程小题 —— 设计火车票模拟程序
- 6.插入脚注后,正文空一行
- Chromium扩展(Extension)的页面(Page)加载过程分析
热门文章
- Android开发概要记录
- c#加粗代码_c#窗体,选中复选框,文字加粗变绿代码
- JavaScript实现Apache .htaccess 转化nginx生成器工具-toolfk程序员工具网
- 洛谷2766:[网络流24题]最长不下降子序列问题——题解
- 使用jmeter测试工具完成文件的上传
- Linux LB 集群知识、如何用 LVS 方式实现 LB 集群?
- 设置WPF窗口相对于非WPF窗口的位置
- 获取RadioButton选中的值
- kaptcha 验证码在spring mvc 中的使用
- 【转】MFC下用ADO连接SQL SERVER,保存图片,BLOB