绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
GaussDB 100 逻辑导出
2020-02-26 11:49:55

操作场景

EXP用于数据库的逻辑导出。

注意事项

  • 当前EXP导出实现是在客户端组装SQL发给服务端,因此服务端看到的是具体的DDL、DML语句。

  • 客户端操作日志,即LOG参数指定的文件会记录EXP命令行。

  • 服务端审计日志{GSDB_DATA}/log/audit中会记录具体的DDL和DML语句。

  • 逻辑导出不支持SYS用户数据导出。

  • 逻辑导出数据时,需要对导出的对象有相应的操作权限。

  • EXP使用-h参数、help参数或者option参数,并以“;”或者“/”结束,可以显示EXP命令的使用帮助。

  • FILETYPE=BIN时,会导出三类文件:元数据文件(用户指定的文件)、数据文件(.D文件)和LOB文件(.L文件)。

  • 逻辑导出数据时,会在指定的导出文件路径下生成一个元数据文件和一个名为data的子目录,如果未指定导出文件路径,则默认在当前路径下生成一个元数据文件和一个名为data的子目录。FILETYPE=BIN时,生成的子文件(数据文件、LOB文件)会放在二级目录data下,如果指定的元数据文件和生成的子文件已经存在,则会报错。

  • 逻辑导出时若目录中有同名文件,则直接覆盖同名文件不作任何提示。

语法格式

{EXP | EXPORT}[ keyword =param [ , ... ] ] [ ... ];

参数说明

  • EXP

    逻辑导出命令,等同于EXPORT。

  • keyword

    导出关键字,具体如下所示。

    • Y:添加。

    • N:不添加。

    • Y:全导出

    • N:不导出

    • Y:支持。

    • N:不支持。

    • Y:支持。

    • N:不支持。

    • Y:支持。

    • N:不支持。

    • Y:支持。

    • N:不支持。

    • 当取值为2-16时,代表并发的线程数。

    • 当取值为1或大于16时,代表单线程。

    • Y:导出。

    • N:不导出。

    • Y:不导出。

    • N:导出。

    • Y:不增加。

    • N:增加。

    • Y:导出。

    • N:不导出。

    • Y:跳过。

    • N:不跳过。

    • ALL:全部导出。

    • DATA_ONLY:只导出数据。

    • METADATA_ONLY:导出表描述。

    • USERS

      指定要导出的用户,多个用户以逗号分隔,%表示所有用户。

      任何用户都不能导出SYS用户数据,但SYS用户可以指定导出其他用户的数据;普通用户需要具有DBA角色才能导出指定其他用户的数据;普通用户至少需要SELECT ANY TABLE或者READ ANY TABLE基本权限才能导出自身的数据。

    • TABLES

      指定要导出的表,多个表以逗号分隔,%表示所有表。

    • DIST_RULES

      指定要导出的路由规则,多个路由规则以逗号分隔,%表示所有路由规则。

      此参数仅在GaussDB 100以分布式模式部署的时候使用。

    • FILE

      导出的文件路径和文件名,需要使用双引号。如果不指定文件路径,则导出文件的默认存储路径是执行命令的当前路径。

    • FILETYPE

      导出的文件类型。

      取值范围:TXT、BIN。

      默认值是TXT。

    • LOG

      逻辑导出产生的日志文件路径和文件名,需要使用双引号。

    • COMPRESS

      指定导出压缩级别。

      取值范围:[0,9],0级代表不压缩,9级代表压缩率高。

      默认值:0。

    • CONTENT

      导出数据还是导出表的描述。

      取值范围:

      默认值:ALL。

    • QUERY

      导出表时指定的查询条件,需要使用双引号,例如"where rownum <= 10"。

    • SKIP_COMMENTS

      导出ddl时是否添加注释。

      取值范围:

      默认值:N。

    • FORCE

      遇到错误时是否继续导出下一个对象。

      取值范围:

      默认值:N。

    • SKIP_ADD_DROP_TABLE

      导出表之前是否增加drop表的命令。

      取值范围:

      默认值:N。

    • SKIP_TRIGGERS

      是否导出触发器。

      取值范围:

      默认值:N。

    • QUOTE_NAMES

      是否导出对象名加双引号 。

      取值范围:

      默认值:N。

    • COMMIT_BATCH

      批量提交的数据量。

      取值范围:自然数。0表示每个表commit一次。

      默认值:1000。

    • INSERT_BATCH

      插(入)单条insert语句的数据量。

      取值范围:自然数。

      默认值:1。

    • FEEDBACK

      导出进度提示。

      取值范围:自然数。0表示一个表提示一次。

      默认值:10000,表示10000条数据提示一次。

    • PARALLEL

      设置并发的线程数。

      取值范围:自然数。

      默认值:0。

    • CONSISTENT

      是否支持导出全局数据的一致性。

      取值范围:

      默认值:N。

    • CREATE_USER

      是否支持导出用户的定义语句,即创建用户的DDL语句,需要与USERS关联使用。

      取值范围:

      默认值:N。

    • ROLE

      是否支持导出用户角色(非SYS预置角色)的定义语句,即创建角色的DDL语句,需要与USERS关联使用。

      取值范围:

      默认值:N。

    • GRANT

      是否支持导出用户或角色的赋权语句,需要与USERS和ROLE关联使用。

      取值范围:

      默认值:N。

    • TABLESPACE

      是否导出全部表空间。全导出表空间目前只处理用户创建的,不处理系统默认预留。文件存放目录,与系统默认表空间路径一致。

      取值范围:

      默认值:N。

    • TABLESPACE_FILTER

      过滤指定表空间,多个表空间需要以逗号分隔。该指定的表空间,只有过滤的作用,不生成创建语句。不支持%,即不支持指定过滤全量表空间。

    • WITH_CR_MODE

      导出表和索引脚本时,是否添加CR_MODE选项。

      取值范围:

      默认值:N。

示例

  • 导出当前用户的tab1和tab2中的数据。

    --删除表tab1,tab2。
    DROP TABLE IF EXISTS tab1;
    DROP TABLE IF EXISTS tab2;
    --创建表tab1。
    CREATE TABLE tab1(ID INT NOT NULL,score INT,COMMENT1 VARCAHR(2000));
    --向表tab1插(入)数据。
    INSERT INTO tab1(1,'92','测试');
    INSERT INTO tab1(2,'98','安全');
    INSERT INTO tab1(3,'95','开发');
    INSERT INTO tab1(4,'97','运维');
    --提交事务。
    COMMIT;
    --创建表tab2。
    CREATE TABLE tab2(ID INT NOT NULL,score INT,COMMENT2 VARCAHR(2000));
    --向表tab2插(入)数据。
    INSERT INTO tab2(11,'93','测试建议');
    INSERT INTO tab2(12,'98','安全指定');
    INSERT INTO tab2(13,'93','开发维护');
    INSERT INTO tab2(14,'96','运维');
    --提交事务。
    COMMIT;
    EXP TABLES=tab1,tab2 FILE="file1.dmp";
  • 导出EMP、DEPT和MGR用户的数据。

    --删除已存在的用户EMP,DEPT,MGR。
    DROP USER IF EXISTS EMP;
    DROP USER IF EXISTS DEPT;
    DROP USER IF EXISTS MGR;
    --创建用户EMP,DEPT,MGR。
    CREATE USER EMP IDENTIFIED BY 'database_123';
    CREATE USER DEPT IDENTIFIED BY 'database_123';
    CREATE USER MGR IDENTIFIED BY 'database_123';
    EXP USERS = EMP,DEPT,MGR FILE="file1.dmp";
  • 导出路由规则RULE1和RULE2的数据。

    EXP DIST_RULES = RULE1,RULE2 FILE="file1.dmp";
  • 创建TEST_USER用户和TEST_ROLE角色,并赋权,再导出用户、角色及用户下表结构信息。

    --删除已存在的用户test_user。
    DROP USER IF EXISTS test_user;
    --删除已存在的角色test_role。
    DROP ROLE test_role;
    --创建用户test_user。
    CREATE USER test_user IDENTIFIED BY 'huawei_123';
    --创建角色test_role。
    CREATE ROLE test_role IDENTIFIED BY 'exp_user123';
    --给用户test_user赋权。
    GRANT DBA TO test_user;
    --给角色test_role赋权。
    GRANT CREATE TABLE TO test_role;
    --给用户test_user赋予test_role角色。
    GRANT test_role TO test_user;
    --导出用户test_user、角色test_role及用户下表结构信息。EXP USERS = TEST_USER CONTENT = METADATA_ONLY CREATE_USER = Y ROLE = Y GRANT = Y FILE = "file1.dmp";
  • 导出表空间。

    EXP USERS = TEST_USER CONTENT = METADATA_ONLY TABLESPACE= Y FILE = "file1.dmp";
  • 导出过滤指定表空间内数据。

    EXP USERS = TEST_USER TABLESPACE_FILTER = A,B FILE = "file1.dmp";
  • 压缩文件的方式导出指定用户数据。

    EXP USERS = TEST_USER  FILE = "file1.dmp" COMPRESS = 1;


分享好友

分享这个小栈给你的朋友们,一起进步吧。

GaussDB_数据库
创建时间:2020-01-06 16:21:44
华为GaussDB数据库小栈
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • GaussDB_数据库
    专家
戳我,来吐槽~