- 浏览: 848450 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (530)
- Java编程 (64)
- C/C++/D (6)
- .Net/C# (9)
- Ruby (12)
- JavaScript (77)
- XML (1)
- JSON (1)
- Ajax (17)
- ExtJs (81)
- YUI (1)
- JQuery (7)
- DWR (1)
- HTML (7)
- CSS (7)
- Database (6)
- PowerDesigner (23)
- DB2 (2)
- Oracle (57)
- MS SQL Server (8)
- MySQL (6)
- JSP/Servlet/JSTL/TagLib (3)
- Spring (1)
- Hibernate (0)
- iText (0)
- Struts (0)
- Struts2 (0)
- iReport (0)
- FreeMarker (0)
- HttpClient (1)
- POI (6)
- FckEditor (15)
- Eclipse / MyEclipse (10)
- IntelliJ IDEA (0)
- NetBeans (0)
- Tomcat (11)
- WebLogic (1)
- Jboss (3)
- jetty (4)
- IIS (2)
- CVS/VSS (1)
- FTP (1)
- Windows/DOS (6)
- Linux/Unix (0)
- 软件建模 UML (0)
- Design Pattern & Thinking In Programming (10)
- 数据结构与算法 (12)
- 软件项目管理 (9)
- 行业应用解决方案 (3)
- 电脑软件与故障解决 (13)
- 编程语言 (1)
- 十万个为什么 (3)
- JBPM (2)
- sysbase (2)
- JDBC (8)
- Ant (2)
- Case-计算机辅助软件工程 (1)
- WebService (4)
- 浏览器 (1)
最新评论
-
gaoqiangjava:
同一楼,还请大手帮解决
JAVA读取word文件 -
hyl523:
// 判断数组中的第一个值是否未定义,如果未定义,便定义为空对 ...
javascript面向对象之二 命名空间 -
ping12132200:
ping12132200 写道我抱着个错不是因为:body标签 ...
extjs在IE报对象不支持此属性或方法 -
ping12132200:
我抱着个错不是因为:body标签内的第一个元素不能为文本tex ...
extjs在IE报对象不支持此属性或方法 -
fireinjava:
呀,不错,转走了,谢谢啦~
利用OpenOffice将word转换成PDF
一、基本知识
Oracle 的 SQL* LOADER 可以将外部格式化的文本数据加载到数据库表中。通常 与 SPOOL导出文本数据方法配合使用。
1、命令格式
SQLLDR keyword=value [,keyword=value,……]
例:$ sqlldr user/pwd control=emp.ctl data=emp.dat bad=emp.bad log=emp.log
2、控制文件
SQL*LOADER 根据控制文件可以找到需要加载的数据。并且分析和解释这些数据。
控制文件由三个部分组成,具体参数参考帮助文档:1. 全局选件,行,跳过的记录数等;2. INFILE 子句指定的输入数据;3. 数据特性说明。
comment: ——注释
例:
load data infile *
append ——除了 append外,还有 insert、replace、truncate等方式
into table emp fields terminated b y ‘|’
(
no float external, name char(20),
age integer external,
duty char(1),salary float external,
upd_ts date(14) ‘YYYYMMDDHH24MISS’)
begindata
100000000003|Mulder|000020|1|000000005000|20020101000000
100000000004|Scully|000025|2|000000008000|20020101235959
控制文件中infile选项跟sqlldr 命令行中data 选项含义相同,如使用infile *则表明数据在本控制文件以 begin data 开头的区域内。 一些选项:FIELDS TERMINATED BY WHITESPACE FIELDS TERMINATED BY x'09' FILLER_1 FILLER, // 指定某一列将不会被装载
DEPTNO position(1:2), DNAME position(*:16), // 指定列的位置SEQNO RECNUM //载入每行的行号
SKIP n // 指定导入时可以跳过多少行数据
3、数据文件
按控制文件数据格式定义的数据行集,
例:
100000000001|Tom|000020|1|000000005000|20020101000000
100000000002|Jerry|000025|2|000000008000|20020101235959
固定格式、可变格式、流记录格式:
固定格式:
当数据固定的格式(长度一样)时且是在文件中得到时,要用 INFILE "fix n"
load data
infile 'example.dat' "fix 11"
into table example
fields terminated b y ',' optionally enclosed by '"'
(col1 char(5), col2 char(7)) example.dat:
001, cd, 0002,fghi,
00003,lmn,
1, "pqrs",
0005,uvwx,
可变格式:
当数据是可变格式(长度不一样)时且是在文件中得到时,要用 INFILE "var n".如:
load data
infile 'example.dat' "var 3"
into table example
fields terminated b y ',' optionally enclosed by '"'
(col1 char(5), col2 char(7)) example.dat:
009hello,cd,010world,im,
012my,name is,
流记录格式: // Stream-recored format:load data infile 'xx.dat' "str '|\n'"
into table xx field terminated b y ',' optionally enclosed by '"'
(col1 char(5), col2 char(7))
example.dat:
hello, ccd,|
world, bb,|
4、坏文件
bad=emp.bad坏文件包含那些被 SQL*Loader拒绝的记录。被拒绝的记录可能是不符合要求的记录。
5、日志文件及日志信息
log=emp.log当 SQL*Loader 开始执行后,它就自动建立 日志文件。日志文件包含有加载的总 结,加载中的错误信息等。
二、高级选项
1、Conventional Path Load与Direct Path Load
Conventional-path Load:通过常规通道方式上载。
特点:commit, always gen redo logs, enforce all constraints, fire insert triggers, can load into cluster, other user can make change
rows:每次提交的记录数
bindsize:每次提交记录的缓冲区
readsize:与 bindsize 成对使用,其中较小者会自动调整到较大者
sqlldr 先计算单条记录长度,乘以 rows,如小于 bindsize,不会试图扩张,rows以填充 bindsize;如超出,则以 bindsize 为准。 命令为:
$ sqlldr dbuser/oracle control=emp.ctl log=emp.log rows=10000 bindsize=8192000
Direct-Path Load:
通过直通方式上载,可以跳过数据库的相关逻辑,不进行 SQL解析,而直接将数 据导入到数据文件中。
特点:save, conditionly gen redo logs, enforce PK UK NN, not fire triggers, can not load into cluster, other user can not make change命令为:
$ sqlldr dbuser/oracle control=emp.ctl log=emp.log direct=true
2、SPOOL导出文本数据方法
导入的数据文件可以用 SPOOL导出文本数据方法生成。
SQL*PLUS环境设置
SET NEWPAGE NONE HEADING OFF SPACE 0
PAGESIZE 0 SET TRIMOUT ON TRIMSPOOL ON LINESIZE 2500
注:LINESIZE 要稍微设置大些,免得数据被截断,它应和相应的 TRIMSPOOL结合使用防止导出的文本有太多的尾部空格。
但是如果 LINESIZE 设置太大,会大大降低导出的速度,另外在 WINDOWS下导 出最好不要用 PLSQL导出,速度比较慢,直接用 COMMEND 下的 SQLPLUS命令最 小化窗口执行。对于字段内包含很多回车换行符的应该给与过滤,形成比较规矩的文本 文件。
通常情况下,我们使用 SPOOL方法,将数据库中的表导出为文本文件,如下述:
set trimspool on
set linesize 120 pagesize 2000 newpage 1 heading off term off spool 路径+文件名
select col1||','||col2||','||col3||','||col4||'……' from tablename;
spool off
三、脚本
1、将表中数据记录导出为字段值用分隔符'|'分开的。dat文件
#!/bin/ksh
##################################################################
## 名称: unloadtable
## 功能: 本 shell 用于将表中数据记录导出
## 导出为字段值用分隔符'|'分开的。dat文件
## 编者:
## 日期: 2006.03.18
##################################################################
if [ $# -ne 3 ]
then echo "usage:unloadtable tablename username password."
exit 0
fi
##准备工作
echo "set heading off " >/tmp/$1.col
echo "set pagesize 0" >>/tmp/$1.col
echo "set linesize 800 " >>/tmp/$1.col
echo "set feedback off " >>/tmp/$1.col
echo "set tab off " >>/tmp/$1.col
echo "select column_name||',' from user_tab_columns where lower(table_name)='$1' order by
column_id; " >> /tmp/$1.col
##产生 select 语句
echo "set heading off " >/tmp/$1.sel
echo "set pagesize 0" >>/tmp/$1.sel
echo "set linesize 800 " >>/tmp/$1.sel
echo "set feedback off " >>/tmp/$1.sel
echo "set tab off " >>/tmp/$1.sel
echo "select " >>/tmp/$1.sel
echo `sqlplus -s $2/$3 < /tmp/$1.col` |sed "s/,/||'|'||/g" |sed "s/||$//g"|sed "s/date/\"date\"/g"
>>/tmp/$1.sel
##生成 dat文件
#echo "from $1;\n/" >>/tmp/$1.sel 由于 / 导致多执行一次 select
echo "from $1;\n" >>/tmp/$1.sel
sqlplus -s $2/$3 < /tmp/$1.sel >$1_tmp.dat
#awk '{if(FNR!=1) print $0}' $1_tmp.dat >$1.dat FNR 选项使得第一条记录选不出
awk '{print $0}' $1_tmp.dat >$1.dat
rm -f $1_tmp.dat
2、将数据导入到相应表中
#!/bin/ksh
##################################################################
## 名称:loadtable
## 功能:本 shell 用于将已经准备好的。dat数据文件导入相应的表中
## .dat 文件各个字段值用分隔符'|'分开。
## 编者:
## 日期: 2006.03.18
##################################################################
if [ $# -ne 3 ]
then
echo "usage:loadtable tablename username password." exit 0 fi
##准备工作
echo "set heading off " >/tmp/$1.colsql
echo "set pagesize 0" >>/tmp/$1.colsql
echo "set linesize 800 " >>/tmp/$1.colsql
echo "set feedback off " >>/tmp/$1.colsql
echo "set tab off " >>/tmp/$1.colsql
echo "select column_name||',' from user_tab_columns where lower(table_name)='$1' order by
column_id; " >> /tmp/$1.colsql
##产生 ctl文件
echo "load data" >/tmp/$1.ctl
echo "infile *" >>/tmp/$1.ctl
echo "into table $1" >>/tmp/$1.ctl
echo "fields terminated by '|'" >>/tmp/$1.ctl
echo `sqlplus -s $2/$3 < /tmp/$1.colsql` |sed "s/,$/)/g" |sed "s/^/(/g" >>/tmp/$1.ctl
##开始导入数据
echo "truncate table $1;" >/tmp/$1.sql
sqlplus $2/$3 < /tmp/$1.sql
sqlldr $2/$3 data=$1.dat control=/tmp/$1.ctl log=/tmp/$1.log
http://pcedu.pconline.com.cn/empolder/db/oracle/0906/1679028.html
发表评论
-
oracle中怎样查询数据表的哪个字段是主键
2011-03-20 18:17 1530selecttable_name,constraint_nam ... -
ORACLE树查询,startwithconnectbyprior
2011-03-20 18:12 1008[url=#author]周 登朋[/url] ([url=m ... -
java.sql.SQLException: ORA-00933: SQL command not properly ended
2010-10-08 19:16 2308java.sql.SQLException: ORA-0093 ... -
Oracle数据显示--横表转纵表
2010-10-06 11:42 11801.建表-- Create table create ta ... -
Oracle学习笔记
2010-07-28 00:30 8911、set linesize 100; 设置长度 2、se ... -
《oracle 9i从入门到精通读书笔记2》
2010-07-26 19:51 1210第二章:PL/SQL基础 2.1 PL/SQL程序结构 ... -
《Oracle9i PL/SQL 从入门到精通读书笔记1》
2010-07-26 19:51 1194Oracle9i PL/SQL 从入门到精通学习笔记 第一章: ... -
Oracle域用户安装
2010-07-05 19:43 1194问题:如果在域中安装Oracle 10G, 在DataB ... -
存储过程无法代替触发器的特殊情况
2010-07-03 13:30 1030在这里先解释一下推崇 ... -
informix的字符串类型详解(含与oracle的对比)
2010-07-03 13:29 1746lvarchar在9.4版本之后才可以用带指定长度的方式,如l ... -
oracle的字符串类型详解
2010-07-03 13:29 1686整理一下对于char,characte ... -
Oracle学习笔记
2010-07-01 20:29 7621、set linesize 100; 设置长度 2、se ... -
Oracle数据库函数(单行函数)
2010-07-01 20:28 915Oracle数据库函数(单行函数) Oracle中的函 ... -
oracle日期函数集锦
2010-07-01 20:26 779一、 常用日期数据格式 1.Y或YY或YYY 年的最后一位, ... -
Oracle时间加减
2010-07-01 20:23 1095加法 select sysdate,add_months(s ... -
Oracle中数值的计算
2010-06-30 23:46 1138运算符 含义 · +(加) 加法 · ||(加) ... -
Oracle常见问题处理
2010-06-30 23:46 944一、Oracle的安装目录不能是中文,否则安装不成功。解决:O ... -
Oracle基础练习(三)
2010-06-30 23:45 10531、select 5/2,null*5 from dual, ... -
如何在Oracle中建表格时就指定主键和外键
2010-06-30 23:42 1515创建表的语法-创建表格语法:create table 表 ... -
Oracle触发器中when语句的用法
2010-06-30 23:41 1456案例:scott.emp表的销售员工资只能增加,不能减少 代 ...
相关推荐
以上是Oracle数据库备份与恢复的相关知识点总结, 包括了EXP/IMP、SQL*LOADER、OS备份/用户管理的备份与恢复以及RMAN的详细内容和技术要点。这些知识点对于确保数据库的安全性和高可用性至关重要, 希望对您有所帮助。
SQL*Loader是一种用于加载数据到Oracle数据库的工具。 - **命令格式:** `sqlldr userid=SYS/password@sid control=control_file.log` - **控制文件:** 定义如何将数据文件中的数据加载到数据库中。 - **数据文件...
### Oracle数据库备份与恢复知识点详解 #### 一、EXP/IMP(导出与导入) **1. EXP/IMP概述** EXP/IMP是Oracle提供的用于数据导入导出的工具,适用于Oracle数据库之间的数据迁移和备份。 **2. 基本命令** - EXP...
Oracle数据库备份与恢复不仅涉及工具的使用,还需要理解备份类型(如完整备份、增量备份、差异备份)、恢复策略(如点-in-time恢复、介质恢复)以及RMAN(Recovery Manager)等高级技术。RMAN提供更全面的备份和恢复...
### Oracle数据库实验操作知识点 #### 第一部分:SQL基础 ##### 基本查询语句 - **实验1:** 编写一个简单的SQL查询语句,用于查询表中的所有行和所有列。例如: ```sql SELECT * FROM 表名; ``` - **实验2:**...
### Oracle 数据库备份与恢复知识点总结 #### 一、EXP/IMP(导出与导入,装库与卸库) **1.1 基本命令** - **获取帮助**: 使用`expdp help=yes`或`impdp help=yes`来获取命令的帮助信息。 - **三种工作方式**: -...
【Oracle第11章数据库管理操作】主要涵盖了数据库管理中的关键环节,包括故障概述、备份类型、使用企业管理器(OEM)和PL/SQL进行数据库的备份与恢复,以及导入/导出操作。以下是详细的知识点说明: 1. **数据库...
Oracle数据库的备份与恢复是数据库管理员必须掌握的关键技能,它涉及到数据的安全性和业务连续性。在Oracle中,备份主要是为了防止数据丢失,而恢复则是在系统出现故障或数据损坏时,能够快速恢复到正常状态的过程。...
### RAC环境下Oracle数据库的备份与恢复 #### 一、引言 在现代企业级应用环境中,Oracle Real Application Clusters (RAC) 提供了一种高效且可靠的解决方案,用于实现高性能、高可用性和可伸缩性的数据库服务。...
#### 三、Oracle数据库备份与恢复 备份与恢复是确保数据安全的关键步骤。 1. **备份类型**: - **完整备份**:备份整个数据库。 - **增量备份**:仅备份自上次备份以来发生变化的数据。 - **逻辑备份**:使用...
3. **调用SQL*Loader**:在批处理文件中,我们通过`sqlldr`命令来启动SQL*Loader,其基本格式为: ``` sqlldr 用户名/密码@数据库实例 control=控制文件路径 data=数据文件路径 log=日志文件路径 bad=错误文件路径...
### Oracle备份与恢复知识点概述 ...以上是关于Oracle备份与恢复的重要知识点概览,这些知识点涵盖了从基础命令到高级应用的各个方面,对于理解Oracle数据库的备份机制以及如何有效地进行数据保护具有重要的指导意义。
- 数据备份与恢复 3. **数据库管理工具**: - SQL*DBA:用于执行数据库管理任务的工具 - SQL*Loader:批量导入数据的工具 - Export & Import:数据迁移和备份的实用程序 4. **数据库操作**: - 日志开关:当...
4. **备份与恢复模拟**:了解如何使用RMAN进行数据库备份,并模拟故障场景进行恢复操作。 5. **查询优化**:通过编写并比较不同查询语句的执行计划,学习如何写出高效的SQL。 此外,可能还会涉及PL/SQL编程,数据库...
学习Oracle数据库管理员教程,不仅需要掌握以上理论知识,还需要实践操作,如使用SQL*DBA、SQL*Loader、Export & Import等工具进行数据库的日常管理和维护工作。通过阅读俞盘祥的《Oracle数据库系统基础》、沈佩娟和...
- **SQL*Loader**:Oracle提供的一种强大的工具,能够快速地将大量数据从文本文件或CSV文件加载到数据库中。SQL*Loader读取控制文件,该文件定义了数据文件的格式和数据库表的映射。 - **Data Pump Import (expdp)...
7. **分布式数据库架构设计中的备份与恢复**: - **待加载数据**:通过SQL\*Loader等工具批量导入数据。 - **数据备份**:定期进行数据备份,确保数据安全。 - **业务数据**:保护核心业务数据不受损失。 8. **...
SQL*Loader 是 Oracle 数据库下用于数据导入的一种重要工具,它由 Oracle 客户端提供。此工具支持多种数据格式,能够高效地将外部文件中的数据加载到 Oracle 数据库表中。SQL*Loader 的强大之处在于其灵活性和效率,...
- **11.5 SQL*LOADER:** SQL*Loader 是一个批量加载工具,可以将外部数据文件加载到Oracle数据库中。 - **11.6 外部表:** 外部表允许直接访问存储在文件系统中的数据,无需将其加载到数据库中。 - **11.7 LogMiner...