#exp
exp是YashanDB的配套导出工具,提供用户按不同方式进行数据导出的能力,实现数据的迁移或备份恢复:
- 元数据文件导出:从数据库导出包含表结构、索引、约束等所有的元信息和数据。生成的元数据文件可通过imp工具导入到数据库(同构)。
- CSV文件导出:从数据库导出按指定表结构排列的数据,并通过--csv命令选项指定生成CSV文件。生成的CSV文件可通过yasldr工具或LOAD DATA语句导入到数据库(同构或异构)。
- SQL文件导出:从数据库导出包含表结构、索引、约束等所有的元信息,并通过--sql命令选项指定生成SQL文件。生成的SQL文件可通过yasql工具导入到数据库(同构)。
# 元数据文件导出
支持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权限的其他用户。