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;
IMP
操作场景
IMP用于数据库的逻辑导入。
注意事项
当前IMP导入实现是在客户端组装SQL发给服务端,因此服务端看到的是具体的DDL、DML语句。
客户端操作日志,即LOG参数指定的文件会记录IMP命令行。
服务端审计日志{GSDB_DATA}/log/audit中会记录具体的DDL和DML语句。
导入bin格式文件,并设置content=DATA_ONLY或METADATA_ONLY时,对应的导出文件必须用相同的content模式。
IMP使用-h参数、help参数或者option参数,并以“;”或者“/”结束,可以显示IMP命令的使用帮助。
逻辑导入不支持SYS用户数据导入。
FILETYPE=TXT时,不支持导入超过8k的CLOB类型、BLOB类型、TEXT类型或IMAGE类型数据。
FILETYPE=BIN时,不支持user、table、remap的可选模式,只能按照导出文件全量导入。
IMP支持将老版本的导出文件导入到当前版本。
逻辑导入时若目录中有同名文件,则直接覆盖同名文件不作任何提示。
语法格式
{IMP | IMPORT} [ keyword =param [ , ... ] ] [ ... ];
参数说明
IMP
逻辑导入命令,等同于IMPORT。
keyword
导入关键字,具体如下所示。
ON:支持。
OFF:不支持。
Y:支持。
N:不支持。
Y:支持。
N:不支持。
Y:执行。
N:不执行。
Y:打印不导入。
N:不打印只导入。
DATA_ONLY:只导入数据不导入表结构。
METADATA_ONLY:只导入表结构,不导入数据。
ALL:两者都导入。
Y:全量导入。
N:不全量导入。
TXT:文本格式。
BIN。二进制格式。
USERS
指定要导入的用户,多个用户以逗号分隔,%表示所有用户。
普通用户具有DBA角色才能导入除SYS用户外的其他用户的数据;普通用户导入自身数据需要有对应的操作权限,如导入创建表数据需要有CREATE
TABLE权限。
TABLES
指定要导入的表,多个表以逗号分隔,%表示所有表。
FILE
导入的文件路径和文件名,路径及文件名需要使用双引号。
文件名必须指定,不指定路径时,默认路径为\pkg\bin\。
LOG
逻辑导入产生的日志文件的路径和文件名,需要使用双引号。
FILETYPE
导入的文件类型。
取值范围:
默认值:TXT。
FULL
是否全量导入。
取值范围:
默认值:N。
CONTENT
导入内容。
取值范围:
默认值:ALL。
REMAP_SCHEMA
指定SCHEMA的映射关系。例如:当需要将导出的用户A、B、C的数据导入给用户D的时候,REMAP_SCHEMA=A,B,C:D。
SHOW
是否只打印sql语句而不导入语句。
取值范围:
默认值:N。
FEEDBACK
导入进度提示。
取值范围:自然数。
默认值:10000。
IGNORE
当语句执行失败时,是否忽略异常,继续执行后面语句。
取值范围:
默认值:N。
REMAP_TABLESPACE
指定表空间的映射关系,例如:当需要将导出的表空间A数据导入到表空间B的时候,REMAP_TABLESPACE=A:B。多个映射关系之间用逗号隔开。
CREATE_USER
是否支持导入用户的定义语句,即创建用户的DDL语句。
取值范围:
默认值:N。
PARALLEL
指定DML的并行数。
取值范围:[1,32]。
默认值:1。
DDL_PARALLEL
指定DDL的并行数。
取值范围:[1,32]。
默认值:1。
NOLOGGING
不记录redo日志,只支持bin格式。
取值范围:
默认值:N。
TIMING
打印导入的统计时间信息。
取值范围:
默认值:OFF。
BATCH_COUNT
filetype=bin时,设置每批导入的数据行数。该参数只在filetype=bin时生效。
取值范围:[1,10000]。
默认值:10000。
示例
导入当前用户的表tab1和表tab2中的数据。 IMP TABLES=tab1,tab2 FILE="file1.dmp"; 导入EMP、DEPT和MGR用户的数据。 IMP USERS=EMP,DEPT,MGR FILE="file1.dmp"; 只导入表结构。 IMP USERS=TEST_USER CONTENT=METADATA_ONLY FILE = "file1.dmp"; 只导入用户的数据。 IMP USERS=USR1,USR2 FILE="file1.dmp" CONTENT=DATA_ONLY;