本文整理自网络,侵删。
在日常工作中;经常会遇到这样的需求:
- 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
10,ACCOUNTING,NEW YORK 20,RESEARCH,DALLAS 30,SALES,CHICAGO 40,OPERATIONS,BOSTON
2.3 创建外部表
drop table dept_external purge; CREATE TABLE dept_external ( deptno NUMBER(6), dname VARCHAR2(20), loc VARCHAR2(25) ) 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(6), dname CHAR(20), loc CHAR(25) ) ) 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 准备实验对象
相关阅读 >>
dba_oracle startup shutdown启动和关闭过程详解(概念)(对数据库进行各种维护操作)
更多相关阅读请进入《oracle》频道 >>
数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。