ITPub博客

首页 > 数据库 > Oracle > oracle_datapump创建外部表案例

oracle_datapump创建外部表案例

原创 Oracle 作者:pwz1688 时间:2014-04-27 23:23:14 0 删除 编辑
一、datapump创建外部表,数据来源于内部实体表
--首先创建 scott.countries实体表,用于做实验
SQL> create table scott.countries(
  2 country_id number,
  3 country_name varchar2(30),
  4 country_reigion varchar2(30)
  5 );
Table created.
SQL> insert into scott.countries values(1,'AMERICA','america');
1 row created.
SQL> insert into scott.countries values(2,'china','zhuzhou');
1 row created.
SQL> insert into scott.countries values(3,'JAPAN','dongjing');
1 row created.
SQL> commit;
Commit complete.
--参考官方datapump创建外部表的案例(其数据来源于内部实体表),如下:
做以下修改后(红色字体部分内容),创建外部表
 CREATE TABLE scott.countries_ext
    ORGANIZATION EXTERNAL
    (
      TYPE ORACLE_DATAPUMP
      DEFAULT DIRECTORY dir --生成dmp文件存放路径
      LOCATION ('countries_ext.dmp') --生成外部文件的名称
    )
    AS SELECT * FROM scott.countries; --数据来源于实体表
--执行以上创建外部表的语句
SQL> CREATE TABLE scott.countries_ext
  2 ORGANIZATION EXTERNAL
  3 (
  4 TYPE ORACLE_DATAPUMP
  5 DEFAULT DIRECTORY dir
  6 LOCATION ('countries_ext.dmp')
  7 )
  8 AS SELECT * FROM scott.countries;
Table created.
SQL> select * from scott.countries_ext;
COUNTRY_ID COUNTRY_NAME COUNTRY_REIGION
---------- ------------------------------ ------------------------------
         1 AMERICA america
         2 china zhuzhou
         3 JAPAN dongjing
由此可见,创建外部实体表成功。
--查看dir外部文件存放路径,并检查是否生成了countries_ext.dmp文件
SQL> select * from dba_directories;
OWNER DIRECTORY_NAME DIRECTORY_PATH
---------- -------------------- --------------------------------------------------
SYS DATA_PUMP_DIR /u01/app/oracle/product/10.2.0/db_1/rdbms/log/
SYS DIR /home/oracle/dir
[oracle@gc1 dir]$ cd /home/oracle/dir
[oracle@gc1 dir]$ ls
COUNTRIES_EXT_14214.log countries_ext.dmp ldr.ctl ldr.log PROD_MY_12177.log PROD_MY_14213.log PROD_MY_14214.log prod_my.data
二、datapump创建外部表,数据来源于外部dmp文件
--gc2机器创建外部表存放文件目录,同gc1
[oracle@gc2 dbs]$ cd /home/oracle
[oracle@gc2 ~]$ mkdir dir
[oracle@gc2 ~]$ cd dir
--数据库创建对应文件目录,并赋予操作权限给所有用户
SQL> create directory dir as '/home/oracle/dir';
Directory created.
SQL> grant all on directory dir to public;
Grant succeeded.

--将上个案例生成的countries_ext.dmp复制一份至远程机器gc2上
[oracle@gc1 dir]$ cd /home/oracle/dir
[oracle@gc1 dir]$ ls
COUNTRIES_EXT_14214.log countries_ext.dmp ldr.ctl ldr.log PROD_MY_12177.log PROD_MY_14213.log PROD_MY_14214.log prod_my.data
[oracle@gc1 dir]$ scp countries_ext.dmp gc2:/home/oracle/dir
oracle@gc2's password:
countries_ext.dmp   
--检查复制是否成功
[oracle@gc2 dir]$ pwd
/home/oracle/dir
[oracle@gc2 dir]$ ls
countries_ext.dmp
--使用datapump创建外部表,且数据来源于外部文件dmp
SQL> CREATE TABLE scott.countries_ext
  2 (COUNTRY_ID NUMBER,
  3 COUNTRY_NAME VARCHAR2(30),
  4 COUNTRY_REIGION VARCHAR2(30)
  5 )
  6 ORGANIZATION EXTERNAL
  7 (
  8 TYPE ORACLE_DATAPUMP
  9 DEFAULT DIRECTORY dir
 10 LOCATION ('countries_ext.dmp')
 11 );
Table created.
SQL> select * from scott.countries_ext;
COUNTRY_ID COUNTRY_NAME COUNTRY_REIGION
---------- ------------------------------ ------------------------------
         1 AMERICA america
         2 china zhuzhou
         3 JAPAN dongjing
由此可见,利用外部文件,使用datapump方式创建外部表可行。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21251711/viewspace-1150577/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-03-30

  • 博文量
    106
  • 访问量
    736027