导入参数:
-
-a, --data-only
只导入数据,不导入模式(数据定义)。gs_restore的导入是以追加方式进行的。
-
-c, --clean
在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象。
-
-C, --create
导入数据库之前会先使用CREATE DATABASE创建数据库。(指定该选项后,-d指定的数据库仅用以执行CREATE DATABASE命令,所有数据依然会导入到创建的数据库中。)
-
-e, --exit-on-error
当发送SQL语句到数据库时如果出现错误,请退出。默认状态下会继续,且在导入后会显示一系列错误信息。
-
-I, --index=NAME
只导入已列举的index的定义。允许导入多个index。如果多次输入-I index导入多个index。
例如:
gs_restore -h host_name -p port_number -d postgres -I Index1 -I Index2 backup/MPPDB_backup.tar在上面这个例子中,Index1和Index2会被导入。
-
-j, --jobs=NUM
运行gs_restore最耗时的部分(如加载数据、创建index或创建约束)使用并发任务。该选项能大幅缩短导入时间,即将一个大型数据库导入到某一多处理器的服务器上。
每个任务可能是一个进程或一个线程,这由操作系统决定;每个任务与服务器进行单独连接。
该选项的最优值取决于服务器的硬件设置、客户端以及网络。还包括这些因素,如CPU核数量、硬盘设置。建议是从增加服务器上的CPU核数量入手,更大的值(服务器上CPU核数量)在很多情况下也能导致数据文件更快的被导入。当然,过高的值会由于超负荷反而导致性能降低。
该选项只支持自定义归档格式。输入文件必须是常规文件(不能是像pipe的文件)。如果是通过脚本文件,而非直接连接数据库服务器,该选项可忽略。而且,多任务不能与–single-transaction选项一起使用。
-
-L, --use-list=FILENAME
只导入列举在list-file中的那些归档形式元素,导入顺序以它们在文件中的顺序为准。注意如果像-n或-t的过滤选项与-L使用,它们将会进一步限制导入的项目。
一般情况下,list-file是通过编辑前面提到的某个-l参数的输出创建的。文件行的位置可更改或直接删除,也可使用分号(;)在行的开始注出。
-
-n, --schema=NAME
只导入已列举的模式中的对象。
该选项可与-t选项一起用以导入某个指定的表。
多次输入-n _schemaname_可以导入多个模式。
例如:
gs_restore -h host_name -p port_number -d postgres -n sch1 -n sch2 backup/MPPDB_backup.tar在上面这个例子中,sch1和sch2会被导入。
-
-O, --no-owner
不输出设置对象的归属这样的命令,以匹配原始数据库。默认情况下,gs_restore会发出ALTER OWNER或SET SESSION AUTHORIZATION语句设置所创建的模式元素的所属。除非是由系统管理员(或是拥有脚本中所有对象的同一个用户)进行数据库首次连接的操作,否则语句会失败。使用-O选项,任何用户名都可用于首次连接,且该用户拥有所有已创建的对象。
-
-P, --function=NAME(args)
只导入已列举的函数。请按照函数所在转储文件中的目录,准确拼写函数名称和参数。
当-P单独使用时,表示导入文件中所有’function-name(args)'函数;当-P同-n一起使用时,表示导入指定模式下的’function-name(args)'函数;多次输入-P,而仅指定一次-n,表示所有导入的函数默认都是位于-n模式下的。
可以多次输入-n schema-name -P 'function-name(args)'同时导入多个指定模式下的函数。
例如:
gs_restore -h host_name -p port_number -d postgres -n test1 -P 'Func1(integer)' -n test2 -P 'Func2(integer)' backup/MPPDB_backup.tar在上面这个例子中,test1模式下的函数Func1(i integer)和test2模式下的函数Func2(j integer)会被一起导入。
-
-s, --schema-only
只导入模式(数据定义),不导入数据(表内容)。当前的序列值也不会导入。
-
-S, --sysadmin=NAME
该参数为扩展预留接口,不建议使用。
-
-t, --table=NAME
只导入已列举的表定义、数据或定义和数据。该选项与-n选项同时使用时,用来指定某个模式下的表对象。-n参数不输入时,默认为PUBLIC模式。多次输入-n <schemaname> -t <tablename>可以导入指定模式下的多个表。
例如:
导入PUBLIC模式下的table1
gs_restore -h host_name -p port_number -d postgres -t table1 backup/MPPDB_backup.tar导入test1模式下的test1和test2模式下test2
gs_restore -h host_name -p port_number -d postgres -n test1 -t test1 -n test2 -t test2 backup/MPPDB_backup.tar导入PUBLIC模式下的table1和test1 模式下test1
gs_restore -h host_name -p port_number -d postgres -n PUBLIC -t table1 -n test1 -t table1 backup/MPPDB_backup.tar
说明:
-t不支持schema_name.table_name的输入格式。 -
-T, --trigger=NAME
该参数为扩展预留接口。
-
-x, --no-privileges/–no-acl
防止导入访问权限(GRANT/REVOKE命令)。
-
-1, --single-transaction
执行导入作为一个单独事务(即把命令包围在BEGIN/COMMIT中)。
该选项确保要么所有命令成功完成,要么没有改变应用。该选项意为–exit-on-error。
-
–disable-triggers
该参数为扩展预留接口,不建议使用。
-
–no-data-for-failed-tables
默认状态下,即使创建表的命令失败(如表已经存在),表数据仍会被导入。使用该选项,像这种表的数据会被跳过。如果目标数据库已包含想要的表内容,这种行为会有帮助。
该选项只有在直接导入到某数据库中时有效,不针对生成SQL脚本文件输出。
-
–no-publications
不导入发布。
-
–no-security-labels
该参数为扩展预留接口,不建议使用。
-
–no-subscriptions
不导入订阅。
-
–no-tablespaces
不输出选择表空间的命令。使用该选项,无论默认表空间是哪个,在导入过程中所有对象都会被创建。
-
–section=SECTION
导入已列举的区段(如pre-data、data或post-data)。
-
–use-set-session-authorization
该选项用来进行文本格式的备份。
输出SET SESSION AUTHORIZATION命令,而非ALTER OWNER命令,用以决定对象归属。该选项使转储更加兼容标准,但通过参考转储中对象的记录,导入过程可能会有问题。使用SET SESSION AUTHORIZATION的转储要求必须是系统管理员,同时在导入前还需参考“SET SESSION AUTHORIZATION”,手工对导出文件的密码进行修改验证,只有这样才能进行正确的导入操作,相比之下,ALTER OWNER对权限要求较低。
-
–pipeline
使用管道传输密码,禁止在终端使用。
须知:
- 如果安装过程中有任何本地数据要添加到template1数据库,请谨慎将gs_restore的输出载入到一个真正的空数据库中;否则可能会因为被添加对象的定义被复制,而出现错误。要创建一个无本地添加的空数据库,需从template0而非template1复制,例如:
CREATE DATABASE foo WITH TEMPLATE template0;
- gs_restore不能选择性地导入大对象;例如只能导入那些指定表的对象。如果某个归档形式包含大对象,那所有大对象都会被导入或一个都不会被导入,如果它们通过-L、-t或其他选项被排除。
说明:
-d/–dbname 和 -f/–file 不能同时使用;
-s/–schema-only 和 -a/–data-only不能同时使用;
-c/–clean 和 -a/–data-only不能同时使用;
使用–single-transaction时,-j/–jobs必须为单任务;
–role 和 --rolepassword必须一起使用。




