在日常工作中;经常会遇到这样的需求:

    • Oracle 数据表跟文本或者文件格式进行交互;即将指定文件内容导入对应的 Oracle 数据表中;或者从 Oracle 数据表导出。
    • 其他数据库中的表跟Oracle数据库进行交互。

  若是少量数据;可选择的解决方案有很多。常用的用 Pl/SQL developer工具,或者手动转换为 INSERT 语句,或者通过API。但数据量大;用上面的方法效率太烂了。本文来说说 Oracle 数据的加载和卸载。

    • Oracle中的DBLINK
    • Oracle加载数据-外部表
    • Oracle加载数据-sqlldr工具
    • Oracle卸载数据-sqludr

一. Oracle 中的 DBLINK

  在日常工作中;会遇到不同的数据库进行数据对接;每个数据库都有着功能;像Oracle有 DBLINK ; PostgreSQL有外部表。

1.1 Oracle DBlink 语法

CREATE [PUBLIC] DATABASE LINK link
CONNECT TO username
IDENTIFIED BY password
USING 'connectstring'

1.2 Oracle To Mysql

  在oracle配置mysql数据库的dblink

二.Oracle加载数据-外部表

  ORACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文件。因此,建立外部表时不会产生段、区、数据块等存储结构,只有与表相关的定义放在数据字典中。外部表,顾名思义,存储在数据库外面的表。当存取时才能从ORACLE专属格式文件中取得数据,外部表仅供查询,不能对外部表的内容进行修改(INSERT、UPDATE、DELETE操作)。不能对外部表建立索引。

2.1 创建外部表需要的目录

# 创建外部表需要的目录
SQL> create or replace directory DUMP_DIR as '/data/ora_ext_lottu'; Directory created.
# 给用户授予指定目录的操作权限
SQL> GRANT READ,WRITE ON DIRECTORY DUMP_DIR TO lottu; Grant succeeded.

2.2 外部表源文件lottu.txt

,ACCOUNTING,NEW YORK
,RESEARCH,DALLAS
,SALES,CHICAGO
,OPERATIONS,BOSTON

2.3 创建外部表

drop table dept_external purge;

CREATE TABLE dept_external (
deptno NUMBER(),
dname VARCHAR2(),
loc VARCHAR2()
)
ORGANIZATION EXTERNAL
(TYPE oracle_loader
DEFAULT DIRECTORY DUMP_DIR
ACCESS PARAMETERS
(
RECORDS DELIMITED BY newline
BADFILE 'lottu.bad'
LOGFILE 'lottu.log'
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
(
deptno INTEGER EXTERNAL(),
dname CHAR(),
loc CHAR()
)
)
LOCATION ('lottu.txt')
)
REJECT LIMIT UNLIMITED;

查看数据

SQL> select * from dept_external;

    DEPTNO DNAME  LOC
---------- -------------------- -------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

三. Oracle加载数据-sqlldr工具

3.1 准备实验对象

  创建文件lottu.txt;和表tbl_load_01。

[oracle@oracle235 ~]$ seq 1000|awk -vOFS="," '{print $1,"lottu",systime()-$1}' > lottu.txt
[oracle@oracle235 ~]$ sqlplus lottu/li0924 SQL*Plus: Release 11.2.0.4.0 Production on Mon Aug 13 22:58:34 2018 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> create table tbl_load_01 (id number,name varchar2(10),accountid number); Table created.

3.2 创建控制文件lottu.ctl

load data
characterset utf8
infile '/home/oracle/lottu.txt'
truncate into table tbl_load_01
fields terminated by ','
trailing nullcols
optionally enclosed by ' ' TRAILING NULLCOLS
(
id ,
name,
accountid
)

3.3 执行sqlldr

[oracle@oracle235 ~]$ sqlldr 'lottu/"li0924"' control=/home/oracle/lottu.ctl log=/home/oracle/lottu.log bad=/home/oracle/lottu.bad

SQL*Loader: Release 11.2.0.4.0 - Production on Mon Aug 13 23:10:12 2018

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Commit point reached - logical record count 64
Commit point reached - logical record count 128
Commit point reached - logical record count 192
Commit point reached - logical record count 256
Commit point reached - logical record count 320
Commit point reached - logical record count 384
Commit point reached - logical record count 448
Commit point reached - logical record count 512
Commit point reached - logical record count 576
Commit point reached - logical record count 640
Commit point reached - logical record count 704
Commit point reached - logical record count 768
Commit point reached - logical record count 832
Commit point reached - logical record count 896
Commit point reached - logical record count 960
Commit point reached - logical record count 1000

四.Oracle卸载数据-sqludr

  sqludr是将Oracle数据表导出到文本中;是牛人楼方鑫开发的。并非Oracle自带工具;需要下载安装才能使用。

4.1 sqludr安装

[oracle@oracle235 ~]$ unzip sqluldr2linux64.zip
Archive: sqluldr2linux64.zip
inflating: sqluldr2linux64.bin
[oracle@oracle235 ~]$ mv sqluldr2linux64.bin $ORACLE_HOME/bin/sqludr

4.2 查看sqludr帮助

[oracle@oracle235 ~]$ sqludr -?

SQL*UnLoader: Fast Oracle Text Unloader (GZIP, Parallel), Release 4.0.
(@) Copyright Lou Fangxin (AnySQL.net) - , all rights reserved. License: Free for non-commercial useage, else USD per server. Usage: SQLULDR2 keyword=value [,keyword=value,...] Valid Keywords:
user = username/password@tnsname
sql = SQL file name
query = select statement
field = separator string between fields
record = separator string between records
rows = print progress for every given rows (default, )
file = output file name(default: uldrdata.txt)
log = log file name, prefix with + to append mode
fast = auto tuning the session level parameters(YES)
text = output type (MYSQL, CSV, MYSQLINS, ORACLEINS, FORM, SEARCH).
charset = character set name of the target database.
ncharset= national character set name of the target database.
parfile = read command option from parameter file for field and record, you can use '0x' to specify hex character code,
\r=0x0d \n=0x0a |=0x7c ,=0x2c, \t=0x09, :=0x3a, #=0x23, "=0x22 '=0x27

4.3 执行sqludr

[oracle@oracle235 ~]$ sqludr lottu/li0924 query="tbl_load_01" file=lottu01.txt field=","
rows exported at -- ::, size MB.
rows exported at -- ::, size MB.
output file lottu01.txt closed at rows, size MB.

7. Oracle数据加载和卸载的更多相关文章

  1. Oracle数据加载和卸载

    一. 平面文件卸载数据泵卸载 EXP/IMP; EXPDP/IMPDP sqlldr的两种模式:传统路径直接路径 控制文件:INSERT.APPEND.TRUNCATE.REPLACE 1.定界数据2 ...

  2. Oracle数据加载之sqlldr工具的介绍

    环境: 服务端:RHEL6.4 + Oracle 11.2.0.4 客户端:WIN10 + Oracle 11.2.0.1 client 目录: sqlldr语法 sqlldr实验准备 sqlldr常 ...

  3. Oracle数据加载之外部表的介绍

    环境: 服务端:RHEL6.4 + Oracle 11.2.0.4 目录: 一. 创建外部表 1.1 创建外部表需要的目录 1.2 创建外部表 1.3 创建外部表源文件 1.4 查询外部表 二. 加载 ...

  4. GreenPlum数据加载

    1. copy命令 对于数据加载,GreenPlum数据库提供copy工具,copy工具源于PostgreSQL数据库,copy命令支持文件与表之间的数据加载和表对文件的数据卸载.使用copy命令进行 ...

  5. C#.Net 如何动态加载与卸载程序集(.dll或者.exe)2----通过应用程序域AppDomain加载和卸载程序集之后,如何再返回原来的主程序域

    实现目的:动态加载dll,执行完毕之后可以随时卸载掉,并可以替换这些dll,以在运行中更新dll中的类. 其实就是通过应用程序域AppDomain加载和卸载程序集. 在这方面微软有篇文章http:// ...

  6. MPP 二、Greenplum数据加载

    Loading external data into greenplum database table using different ways... Greenplum 有常规的COPY加载方法,有 ...

  7. PostgreSQL数据加载工具之pg_bulkload

    1. 介绍 PostgreSQL提供了一个copy命令的便利数据加载工具,copy命令源于PostgreSQL数据库,copy命令支持文件与表之间的数据加载和表对文件的数据卸载.pg_bulkload ...

  8. loading数据加载的6种形式

    数据加载的几种形式及对应的交互设计 1.全屏加载 多出现在H5页面,例如微信的文章详情页.全屏加载的特点是数据一次性加载完成,内容加载完成之前界面都会停留在loading界面.进度条和有趣的动画设计, ...

  9. [技术博客]React-Native中的组件加载、卸载与setState问题

    React-Native中的组件加载.卸载与setState问题. Warning: Can only update a mounted or mounting component. This usu ...

随机推荐

  1. 基于Socket网络编程

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a2011480169/article/details/73602708 博客核心内容: 1.Sock ...

  2. html-轮播图

    <!DOCTYPE html> <html> <head> <title>纯CSS代码实现图片轮播 </title> <meta ch ...

  3. Spark机器学习(6):决策树算法

    1. 决策树基本知识 决策树就是通过一系列规则对数据进行分类的一种算法,可以分为分类树和回归树两类,分类树处理离散变量的,回归树是处理连续变量. 样本一般都有很多个特征,有的特征对分类起很大的作用,有 ...

  4. Window下对nodejs多版本管理GNVM

    Windows下对nodejs多版本的管理,实现随意切换! 官方地址: https://github.com/Kenshin/gnvm http://ksria.com/gnvm/ 01.下载GNVM ...

  5. 001_ASP.NET MVC 实用教程 论坛项目 北盟网校 原创视频教程

    下载地址 http://pan.baidu.com/s/1kUJalbp 在线观看地址 http://www.bamn.cn/course/lesson/1 ASP.NET MVC 使用课程,是201 ...

  6. mysql复制过程中的server-id的理解

    一.     server-id做什么用的,你知道吗? 1. mysql的同步的数据中是包含server-id的,用于标识该语句最初是从哪个server写入的,所以server-id一定要有的 2. ...

  7. C++ 匿名namespace的作用以及与static的区别

    匿名namespace的作用以及它与static的区别 一.匿名namespace的作用 在C语言中,如果我们在多个tu(translation unit)中使用了同一个名字做 为函数名或者全局变量名 ...

  8. .Net可扩展的单据编号生成器-SNF.CodeRule--SNF快速开发平台3.2

    1.背景 在企业应用中单据编号的自定义是一个很常见的需求,如工号.业务单据编码等,能不能抽象一个通用的框架呢? 2.思路 这里的难点在于实现"解释器",比如将"前缀&qu ...

  9. [na][dhcp]dhcp细枝末节&dhcp防攻

    回顾了下,真是以前是一种感觉以后是一种感觉. 特点: 1.dhcp服务器上的配置的网关不一定要有这个ip 2.dhcp服务只是个类似数据库而已(如果不在一个lan). 3. 如果dhcp不在一个lan ...

  10. [ci]jenkins-slave-ssh docker容器化-用户名密码

    jenkins-slave-ssh docker容器化 架构 参考:https://www.youtube.com/watch?v=OxrBCt1JLuQ https://github.com/Dav ...