#exp

exp是YashanDB的配套导出工具,提供用户按不同方式进行数据导出的能力,实现数据的迁移或备份恢复:

  • 元数据文件导出:从数据库导出包含表结构、索引、约束等所有的元信息和数据。生成的元数据文件可通过imp工具导入到数据库(同构)。
  • CSV文件导出:从数据库导出按指定表结构排列的数据。生成的CSV文件可通过yasldr工具或LOAD DATA语句导入到数据库(同构或异构)。
  • SQL文件导出:从数据库导出按指定表结构排列的数据。生成的SQL文件可通过yasql工具导入到数据库(同构)。

以上两种方式通过exp命令的--csv选项区分,未使用--csv选项表示导出元数据文件,否则表示导出CSV数据文件。

# 元数据文件导出

支持FULL(数据库全量导出)、OWNER(导出某个用户)、TABLES(导出指定的表)等多种模式的导出。

可以被exp工具进行元数据导出的对象有:

  • 用户
  • SEQUENCE
  • AC
  • 同义词
  • 视图/物化视图:物化视图需在FULL模式或OWNER模式下导出
  • PACKAGE(BODY)/PROCEDURE/FUNCTION/TRIGGER/LIBRARY/TYPE(BODY)
  • 索引/分区索引
  • 主键
  • 外键
  • 审计策略/使能:仅在FULL模式下导出,且无法导出审计日志
  • 权限
  • PROFILE
  • OUTLINE
  • 定时任务
  • DATABASE LINK

同时,对象的约束、依赖关系(例如VIEW依赖的TABLE)、列属性等信息也将被导出。

Note:

对于存在UDT列的表,元数据导出的限制如下:

  • 对于引用TYPE的表,仅支持导出表的定义,无法导出表中的数据。
  • 对于使用TYPE的同义词作为列的表,会导出为具体类型。
  • OWNER和TABLES模式下,无法导出间接使用的和其他用户下的TYPE。

# CSV文件导出

支持导出一个或多个指定表的数据,按每张表以CSV格式存放到数据文件。

Note:

对于char类型的数据,CSV文件导出时会先将右侧空格去除再导出。

# SQL文件导出

支持导出指定表,用户,或全库的元数据SQL。

Note:

导出范围同元数据文件导出的所有对象的元数据,不包含对象权限的导出。

# 权限要求

exp工具的执行命令里要求输入数据库的用户和密码。

在导出元数据时,该用户为执行导出的操作用户,而非导出对象。对此操作用户的权限规则为:

  • 导出本用户下的对象时,无权限要求。
  • 导出其他用户下的对象时,必须拥有DBA角色权限。

示例

--将DBA角色授予sales用户
GRANT DBA TO sales;

--导出sale0用户
exp sales/sales file=export.dump owner=sales0

--导出sale0用户下的表
exp sales/sales file=export.dump tables=sales0.area

在导出CSV数据时,该用户必须为SYS用户,或者拥有DBA权限的其他用户。