zoukankan      html  css  js  c++  java
  • oracel数据导出导入

    一、导出模式(三种模式)及命令格式

    1、 全库模式

    exp 用户名/密码@网络服务名 full=y file=路径文件名.dmp log=路径文件名.log

    2、 用户模式(一般情况下采用此模式)

    exp 用户名/密码@网络服务名 owners=(用户1,用户2,用户3,…) file=路径文件名.dmp log=路径文件名.log

    3、 表模式

    exp 用户名/密码@网络服务名 tables=(表名1,表名2,表名3,…)file=路径文件名.dmp log=路径文件名.log

    4、 另外,还可以只导出某个表空间

    exp 用户名/密码@网络服务名 tablespaces=(表空间1,表空间2,表空间3,…) file=路径文件名.dmp log=路径文件名.log

    二、导入模式(三种模式)及命令格式

    1、 全库模式

    imp 用户名/密码@网络服务名 full=y file=路径文件名.dmp log=路径ds110.log

    2、 用户模式(一般情况下采用此模式)

    imp 用户名/密码@网络服务名 file=路径文件名.dmp fromuser=导出的用户名 touser=导入的用户名 log=路径ds110.log

    3、 表模式

    imp 用户名/密码@网络服务名 tables=(表名1,表名2,表名3,…)file=路径文件名.dmp fromuser=导出的用户名 touser=导入的用户名 log=路径ds110.log

    4、 另外,还可以只导入某个表空间

    imp 用户名/密码@网络服务名 tablespaces=(表空间1,表空间2,表空间3,…) file=路径文件名.dmp fromuser=导出的用户名 touser=导入的用户名 log=路径ds110.log

    三、导入的命令参数说明

    USERID 用户名/密码

    FULL 是否全库导入 (Y 或 N),默认为 N

    BUFFER 数据缓冲的大小

    FROMUSER 导出的用户列表,即导入文件是从哪个用户导出的

    TOUSER 导入的用户列表,即要到哪个用户中

    FILE 导入文件,是dmp文件

    SHOW 只列出文件内容 (Y 或 N) ,默认为 N 

    TABLES 要导入的表名列表

    IGNORE 在导入过程中是否忽略错误 , 默认为 N

    RECORDLENGTH 记录的长度,默认为operating system-dependent

    GRANTS 导入权限 (Y 或 N),默认为Y

    INCTYPE 导入的类型是否为递增(Y 或 N),默认为 N 

    INDEXES 导入索引 (Y 或 N) ,默认为Y

    COMMIT 在导入过程中,是否导入一行数据,提交一行 (Y 或 N)默认为N,即在每个表导入后,进行提交

    ROWS 导入行数据 (Y 或 N) ,默认为 Y

    PARFILE 参数文件名

    LOG 输出的日志文件

    DESTROY 是否覆盖表空间上的数据文件 (Y 或 N) 默认为N

    INDEXFILE 将表或索引信息写到指定的文件中

    CHARSET 导出文件的字符集,默认为 NLS_LANG

    ANALYZE 在导入时执行ANALYZE语句 (Y 或 N) 默认为 Y

    FEEDBACK 在导入时每个几行显示进度,默认为0

    四、导出的命令参数说明

    USERID 用户名/密码

    FULL 是否全库导入 (Y 或 N),默认为 N

    BUFFER 数据缓冲的大小

    OWNER 导出的用户列表

    FILE 导出文件,是dmp文件

    TABLES 要导出的表名列表

    COMPRESS 是否压缩(Y 或 N), 默认为Y 

    RECORDLENGTH 输入输出记录的长度,默认为operating system-dependent

    GRANTS 导出权限 (Y 或 N),默认为Y

    INCTYPE 导出的类型是否为递增(Y 或 N),默认为 N 

    INDEXES 导出索引 (Y 或 N) ,默认为Y

    RECORD 是否在系统SYS.INCEXP, SYS.INCFIL中记录一个递增或累计的导出(Y 或 N) , 默认为Y 

    ROWS 导出行数据 (Y 或 N) ,默认为 Y

    PARFILE 参数文件名

    CONSTRAINTS 是否导出约束,(Y 或 N) ,默认为 Y 

    CONSISTENT 在执行导出操作时是否加事务(Y 或 N),默认为 N 

    LOG 输出的日志文件

    STATISTICS 在导出时执行ANALYZE语句 (Y 或 N) 默认为 Y

    DIRECT direct path (N) 

    FEEDBACK 在导出时每个几行显示进度,默认为0

    五、导出的对象

    1、 全库模块

    可以导出除sys用户拥有的所有数据库对象,包括:表空间的定义、配置文件、用户定义、角色、系统权限授权、角色授权、默认角色、resource costs、会滚段的定义、数据库链接、虚列、所有目录别名、所有外部函数库、所有对象类型、所有簇定义;对于每个表,还可导出表使用的对象类型定义、表定义、表数据、嵌套表数据、表索引、表约束、表授权、分析表、列和表注释、审核信息、所有引用的完整性约束、所有同义词、所有视图、所有存储过程、包、函数、所有触发器、分析簇、快照、job、all refresh groups and children

    2、 用户模块

    对象类型、数据库链路、序列、簇定义,对于每个表,还可导出表使用的对象类型定义、表定义、表数据、嵌套表数据、表索引、表约束、表授权、分析表、列和表注释、审核信息、属于当前用户的表所引用的完整性约束、同义词、视图、存储过程、包、函数、触发器、分析簇、快照、job、refresh groups

    3、 表模式

    可导出表使用的对象类型定义、表定义、表数据、嵌套表数据、表索引、表约束、表授权、分析表、列和表注释、审核信息、表引用的完整性约束、触发器,还可导出其他用户拥有的触发器、其他用户用户的索引

    六、导入时的顺序

    1、 字符集

    2、 表定义

    3、 表数据

    4、 表索引

    5、 完整性约束、触发器、bitmap索引

    6、 视图、函数、过程

    7、 包

    七、高级应用

    1、 当把数据加载到一张已存在的表中,必须使用参数IGNORE = Y

    2、 如何在导出表时加入条件

    Exp 用户名/密码@网络服务名 file=路径文件名.dmp tables=(表名) query = ”条件”

    3、

    八、全库导入时包含的系统对象

    配置文件profiles

    公共数据库链接

    同义词

    角色

    会滚段的定义

    system audit options 

    系统权限

    表空间定义

    tablespace quotas 

    用户定义

    目录别名

    九、导入工具imp可能出现的问题

    1、数据库对象已经存在

    一般情况, 导入数据前应该彻底删除目标数据下的表, 序列, 函数/过程,触发器等;数据库对象已经存在, 按缺省的imp参数, 则会导入失败;如果用了参数ignore=y, 会把exp文件内的数据内容导入;如果表有唯一关键字的约束条件, 不合条件将不被导入,如果表没有唯一关键字的约束条件, 将引起记录重复

    2、 数据库对象有主外键约束
     这发生在将几个包含表的DMP文件分别导入数据库时,不符合主外键约束, 数据便会导入失败;解决办法: 先导入主表, 再导入依存表;disable目标导入对象的主外键约束, 导入数据后, 再enable它们
    3、 权限不够          
    如果要把A用户的数据导入B用户下, 做导入操作的用户需要有imp_full_database权限
    4、 导入大表( 大于80M ) 时, 存储分配失败
    默认的EXP时, compress = Y, 也就是把所有的数据压缩在一个数据块上,导入时, 如果不存在连续一个大数据块, 则会导入失败,导出80M以上的大表时, 记得compress= N, 则不会引起这种错误.
    5、 imp和exp使用的字符集不同
    如果字符集不同, 导入会失败, 可以改变unix环境变量或者NT注册表里NLS_LANG相关信息,导入完成后再改回来.
    6、 imp和exp版本不能往上兼容

    imp可以成功导入低版本exp生成的文件, 不能导入高版本exp生成的文件

    十、 从一个账户导出,另一个账户导入

    导出表模式示例:

    1 从dbo_pwcdb 账号导出 PRNBSN_CONTENTTEMPLATE,PRNBSN_RELINFOCONTENT 两个表,不带数据

    exp dbo_pwcdb/dbo_pwcdb@BSY2-NQQX-IP50 file=d:daochu_noData.dmp tables=

    (PRNBSN_CONTENTTEMPLATE,PRNBSN_RELINFOCONTENT) rows=n;

    2  导入 dbo_smydb 账户

    imp dbo_smydb/dbo_smydb@BSY2-SMY-IP11 full=y file=d:daochu_noData.dmp  touser=dbo_smydb ignore=y;

    十一、 借助PL/SQL  Developer 工具 导出导入 触发器,存储过程,序列,索引等对象。

    1   A账户登录PL/SQL Developer 工具,在菜单中选择 工具--->导出用户对象

    2 以导出存储过程为示例,选择如下图:

    image

    在procedure 对象中,选择需要导出的存储过程对象,设置输出文件名字,点击导出。

    3 如果在需要导入的oracle库中,是同一个名字的账户,可以直接新建一个命令窗口,然后复制刚才导出fun_proc.sql的内容,粘贴到 命令窗口中,就自动执行了;相当于通过sql脚本进行导入;

      如果需要导入的oracle库中,是另外一个名字的账户,比如B账户。那么需要打开fun_proc.sql 文件,查找所有A账户名全部替换为B账户,然后再用B账户登录PL/SQL Developer 工具,新建命令窗口,粘贴文件内容,执行。

        注意:生成的存储过程名字会如下形式 Create procedure   账户A.存储过程名                      所以需要替换为 Create procedure   账户B.存储过程名. 打开看下就明白了。

       其他对象的导入参照存储过程对象导入方式。

  • 相关阅读:
    learnyou 相关网站
    hdu 3038 How Many Answers Are Wrong
    hdu 3047 Zjnu Stadium 并查集高级应用
    poj 1703 Find them, Catch them
    poj 1182 食物链 (带关系的并查集)
    hdu 1233 还是畅通工程
    hdu 1325 Is It A Tree?
    hdu 1856 More is better
    hdu 1272 小希的迷宫
    POJ – 2524 Ubiquitous Religions
  • 原文地址:https://www.cnblogs.com/starksoft/p/5009805.html
Copyright © 2011-2022 走看看