Oracle之sqlldr sqluldr用法
在 Oracle 数据库中,我们通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法:
A 表的记录导出为一条条分号隔开的 insert 语句,然后执行插入到 B 表中 建立数据库间的 dblink,然后用 create table B as select from A@dblink where ...,或 insert into B select from A@dblink where ... exp A 表,再 imp 到 B 表,exp 时可加查询条件 程序实现 select from A ..,然后 insert into B ...,也要分批提交 再就是本篇要说到的 Sql Loader(sqlldr) 来导入数据,效果比起逐条 insert 来很明显下面主要介绍Sql Loader(sqlldr) 来导入数据。
在命令行下执行 Oracle 的 sqlldr 命令,可以看到它的详细参数说明,要着重关注以下几个参数:
userid -- Oracle 的 username/password[@servicename]
control -- 控制文件,可能包含表的数据
log -- 记录导入时的日志文件,默认为 控制文件(去除扩展名).log
bad -- 坏数据文件,默认为 控制文件(去除扩展名).bad
data -- 数据文件,一般在控制文件中指定。用参数控制文件中不指定数据文件更适于自动操作
errors -- 允许的错误记录数,可以用他来控制一条记录都不能错
rows -- 多少条记录提交一次,默认为 64
skip -- 跳过的行数,比如导出的数据文件前面几行是表头或其他描述
首先:建立一个控制文件 data.ctl,内容如下:
load data CHARACTERSET UTF8 infile "/data/all_zc_pro/tmp01/data01.txt" --指定外部数据文件 append --操作类型,在表中追加新记录 into table TEMP_LH_FDD_USER -- 要插入记录的表 fields terminated by | --数据分隔的方式,“|” trailing nullcols --表的字段没有对应的值时允 许为空 ( --对应的字段 PROV_ID, DEVICE_NUMBER, IMEI, FLUX, FLUX_4G, FLUX_TDD )
说 明:在操作类型 append 位置可用以下中的一值:
1) insert --为缺省方式,在数据装载开始时要求表为空
2)truncate --用 truncate table 来清除表中原有 记录
3) replace --删除旧记录(用 delete from table 语句),替换成新装载的记录
4) truncate --删除旧记录(用 truncate table 语句),替换成新装载的记录
执行语句:
sqlldr userid=ZBG_D/ZBG_DA02@DSSDE control=/data/all_zc_pro/data.ctl log=/data/all_zc_pro/zc/zc_dwa/log20161020.log bad=/data/all_zc_pro/zc/zc_dwa/bad20161020.log
如果数据量很大,可以再加两个参数:direct=ture rows=10000000 rows参数是一次加载的行数
2.sqluldr的用法Oracle数据导出工具sqluldr可以将数据以csv、txt等文件格式导出,适用于大批量数据的导出,导出速度非常快,导出后可以使用Oracle SQL Loader工具将数据导入到数据库中。
执行语句:
sqluldr USER=ZBG_D/ZBG_D0812@DSSDWE query="SELECT DEVICE_NUMBER,IMSI FROM ZBG_DWA.DWA_V_D_CUS_NM_USER_IMSI_011 " rows=100000 field="0x7C" safe="yes" file=/data/all_zc_pro/zc/zc_dwa/ks_imsi_device.txt;
Field 分隔符 指定字段分隔符,默认为逗号
在指定分隔符时,可以用字符的ASCII代码(0xXX,大写的XX为16进制的ASCII码值)来指定一个字符,常用的字符的ASCII代码如下:
回车=0x0d,换行=0x0a,TAB键=0x09,|=0x7c, =0x26,双引号=0x22,单引号=0x27
相关文章
- Oracle安装时先决条件检查失败的解决方案
- 【Python Oracle】使用cx_Oracle 连接oracle的简单介绍
- oracle基本笔记整理及案例分析2
- 《oracle每日一练》免安装Oracle客户端使用PL/SQL
- 《oracle每天一练》Oracle冷备份与数据恢复
- Oracle表空间(tablespaces)
- Oracle trunc()函数的用法
- oracle中substr() instr() 用法
- 如何调试oracle,sqlserver存储过程
- java 查询oracle数据库所有表DatabaseMetaData的用法
- Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)
- 德哥:从Oracle DBA到PostgreSQL布道者
- cx_Oracle连接oracle数据库
- PLSQL与Oracle Client
- Oracle 手工建库第三步 创建数据字典
- Oracle dba_hist_sqlstat
- Oracle 数据库(表)的逻辑备份与恢复
- Oracle ORA-01033: 错误解决办法
- Oracle 中 dual 详解
- Oracle中添加虚拟列(emp是oracle自带表)
- ORACLE 根据上表不同的字段值的统计
- 解锁被锁的Oracle用户
- 【Mysql异构实时同步Oracle】OGG12异构同步mysql到oracle(windows mysql实时同步数据到linux oracle)详细文档