读书笔记:数据搬运工:Oracle数据库的导入导出技巧

我们的文章会在微信公众号IT民工的龙马人生博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

本文为个人学习《Expert Oracle Database Architecture Techniques and Solutions for High Performance and Productivity(第四版本》一书过程中的笔记与理解分享,仅用于学习与交流,部分内容参考原书观点并结合>实际经验进行整理。若涉及版权问题,请联系删除或沟通处理。也请大家支持购买原版书籍。

数据搬运工:Oracle数据库的导入导出技巧

数据搬运的两种神器

在日常数据库工作中,我们经常需要把数据搬进搬出Oracle数据库。这就好比给数据库做"进出口贸易":

数据进口工具:

  • 外部表 - 能把普通文件当成数据库表来用
  • SQL*Loader - Oracle的老牌数据加载工具

数据出口工具:

  • Data Pump - Oracle的专用数据导出格式
  • 平面文件导出 - 生成CSV等通用格式文件

外部表:新一代数据搬运利器

想象一下,你能直接查询一个文本文件就像查询数据库表一样,这就是外部表的魔力!

为什么选择外部表?
虽然SQLLoader还有很多人在用,但外部表正在成为新宠。只有在两种情况下还需要用SQLLoader:

  1. 需要从网络其他位置加载数据时
  2. 多个用户要同时处理不同文件时

外部表的超能力:

  • 能用复杂的查询条件筛选要加载的数据
  • 能直接更新现有数据库记录
  • 加载时能关联其他表进行数据校验
  • 能对数据排序后再加载
  • 一个指令就能往多个表插入数据
  • 支持在读取数据前执行系统命令
  • 对于懂SQL的人来说几乎零学习成本

手把手教你用外部表

三步轻松搞定:

第一步:创建目录对象

create or replace directory ext_tab_dir as '/tmp';

这就好比告诉数据库:"请记住,/tmp这个文件夹很重要!"

第二步:准备数据文件
创建一个dept_ext.csv文件,内容如下:

10,ACCOUNTING,NEW YORK
20,RESEARCH,DALLAS  
30,SALES,CHICAGO
40,OPERATIONS,BOSTON

第三步:创建外部表

CREATE TABLE dept_ext(
  DEPTNO number(2),
  DNAME varchar2(14),
  LOC varchar2(13)
) ORGANIZATION EXTERNAL (
  default directory ext_tab_dir
  location ('dept_ext.csv')
);

大功告成! 现在你可以像查普通表一样查询这个文件:

select * from dept_ext;

高级玩法:数据转换

现实中的数据往往不是那么规整。比如你拿到这样的数据:

10|ACCOUNTING|NEW YORK|12/04/1962
20|RESEARCH|DALLAS|08/10/1966

注意这里:

  • 用|而不是,分隔
  • 日期是mm/dd/yyyy格式

没问题,外部表轻松应对:

CREATE TABLE dept_ext(
  DEPTNO number(2),
  DNAME varchar2(14), 
  LOC varchar2(13),
  CRE_DATE date
) ORGANIZATION EXTERNAL (
  type ORACLE_LOADER
  default directory ext_tab_dir
  access parameters (
    records delimited by newline
    fields terminated by '|'
    (DEPTNO,
     DNAME,
     LOC,
     CRE_DATE char date_format date mask "mm/dd/yyyy")
  )
  location ('dept_ext.csv')
);

看,日期自动转换成了标准的DATE类型!

总结

外部表就像给数据库装上了"文件阅读器",让数据导入变得简单直观。无论是简单的CSV文件,还是需要复杂转换的数据,它都能轻松应对。下次你需要往数据库里导入数据时,不妨试试这个强大的工具,你会发现数据搬运原来可以如此优雅!

记住:好的工具让工作事半功倍,选择合适的数据搬运方式,让你的数据库工作更加高效顺畅!

------------------作者介绍-----------------------
姓名:黄廷忠
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

posted @ 2025-11-13 16:25  认真就输  阅读(8)  评论(0)    收藏  举报