达梦数据库代码导出_达梦6.0数据库的导入导出方法

达梦数据库的备份也分为物理备份和逻辑备份。逻辑备份通过expdb和impdb实现,有意思的是,这两个工具的名称与Oracle10g推出的数据库expdp/impdp很接近,不过在语法和功能上与Oracle数据库exp/imp更加类似。导出工具expdb支持两种模式,一种与Oracle的exp兼容,另一种兼容达梦早起版本的语法,其中前一种提供的功能更强大,因此这里只描述和exp兼容的模式。

C:\dmdbms\bin>expdb userid=test/testtest file=e:\dmdbms\backup\t.dmp log=e:\dmdbms\backup\t.log tables=t

login success

即将导出指定的表通过常规路径 ...

. . 正在导出表   "test"."test"."T"                      4 行被导出

****************** total ***********************

0 databases output...

0 schemas output...

1 tables output...

0 indexes output...

0 triggers output...

0 views output...

0 stored procedures output...

0 sequences output...

0 roles output...

0 dblinks output...

0 synonyms output...

********************* end **********************

成功终止导出, 没有出现警告。语法完全和Oracle的exp一致,不用过多的解释,不过也有一些不方便的地方。比如userid不能省略;比如不提供密码不会以隐藏方式提示输入,而是直接保存;再比如userid、file和log参数都是必选参数,不能忽略使用默认值。下面看看导出整个TEST用户和导出TEST数据库:

C:\dmdbms\bin>expdb userid=test/testtest file=e:\dmdbms\backup\full.dmp log=e:\dmdbms\backup\full.log full=y

login success

即将导出指定的表通过常规路径 ...

. . 正在导出表   "test"."test"."t_num"          0 行

. . 正在导出表   "test"."test"."T_PART_COL"             0 行

. . 正在导出表   "test"."test"."T_PART_RANGE"           0 行

. . 正在导出表   "test"."test"."T_PART_HASH"            0 行

. . 正在导出表   "test"."test"."T_RECORD"                       1000000 行被导出

. . 正在导出表   "test"."test"."t"                      4 行被导出

4 procedures output...

****************** total ***********************

1 databases output...

2 schemas output...

6 tables output...

22 indexes output...

0 triggers output...

0 views output...

4 stored procedures output...

1 sequences output...

0 roles output...

0 dblinks output...

2 synonyms output...

********************* end **********************

成功终止导出, 没有出现警告。

C:\dmdbms\bin>expdb userid=test/testtest file=e:\dmdbms\backup\test.dmp log=e:\dmdbms\backup\test.log owner=test

login success

即将导出指定的表通过常规路径 ...

. . 正在导出表   "test"."test"."t_num"          0 行

. . 正在导出表   "test"."test"."T_PART_COL"             0 行

. . 正在导出表   "test"."test"."T_PART_RANGE"           0 行

. . 正在导出表   "test"."test"."T_PART_HASH"            0 行

. . 正在导出表   "test"."test"."T_RECORD"                       1000000 行被导出

. . 正在导出表   "test"."test"."t"                      4 行被导出

4 procedures output...

****************** total ***********************

0 databases output...

1 schemas output...

6 tables output...

22 indexes output...

0 triggers output...

0 views output...

4 stored procedures output...

1 sequences output...

0 roles output...

0 dblinks output...

2 synonyms output...

********************* end **********************

成功终止导出, 没有出现警告。除了上面介绍的这几个例子,expdb还支持绝大部分exp的参数。可能是与达梦数据库的内存管理机制有关,expdb不支持buffer和recordlength等与客户端分配内存有关的参数。下面再看看导入工具,和expdb一样,impdb也支持两种模式,一种是Oracle的imp兼容模式,另一种是与老版本兼容的模式,推荐使用功能更强的第一种模式。

C:\dmdbms\bin>impdb userid=test/testtest file=e:\dmdbms\backup\test.dmp log=e:\dmdbms\backup\t.log tables=t ignore=y

impdb version: 0X1000101

login success

表 t 已经存在

. . 正在导入表           test.test.t

4行被导入

Error Code -2352: 无效的同义词名 'S_T'

CREATE SYNONYM "S_T" FOR "test"."T"

Error Code -2352: 无效的同义词名 'S_TEST'

CREATE SYNONYM "S_TEST" FOR "test"."F_TAX"

****************** total ***********************

0 databases input...

1 schemas input...

0 tables input...

0 indexes input...

0 triggers input...

0 views input...

0 stored procedures input...

0 sequences input...

0 roles input...

0 dblinks input...

0 synonyms input...

********************* end **********************

成功终止导入, 但出现警告。可以看到,虽然和Oracle的impming令兼容,但是处理方式还是有所区别的。再导入的时候选择的是全用户导出的dmp文件,不过导入的时候明确指定了导入表T,impdb在导入过程中,确实过滤了表,只导入T表的数据,但是用户中的其他对象,比如同义词被再次导入。这一点应该算是个小bug吧。最后看一个FROMUSER/TOUSER的导入:

C:\dmdbms\bin>impdb userid=test/testtest file=e:\dmdbms\backup\test.dmp log=e:\dmdbms\backup\abc.log fromuser=test touser=abc

impdb version: 0X1000101

login success

Error Code -1970: 授权者没有此授权权限

GRANT "DBA" TO "test";

Error Code -1970: 授权者没有此授权权限

GRANT "PUBLIC" TO "test";

.. 正在导入表           test.ABC.t_num         0行被导入

.. 正在导入表           test.ABC.T_PART_COL    0行被导入

.. 正在导入表           test.ABC.T_PART_RANGE  0行被导入

Error Code -1461: 表 'T_PART_RANGE' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555518" ON

"T_PART_RANGE" ("CREATE_DATE" ASC);

Error Code -1461: 表 'T_PART_RANGE' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555519" ON

"T_PART_RANGE" ("CREATE_DATE" ASC);

Error Code -1461: 表 'T_PART_RANGE' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555520" ON

"T_PART_RANGE" ("CREATE_DATE" ASC);

Error Code -1461: 表 'T_PART_RANGE' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555521" ON

"T_PART_RANGE" ("CREATE_DATE" ASC);

Error Code -1461: 表 'T_PART_RANGE' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555522" ON

"T_PART_RANGE" ("CREATE_DATE" ASC);

.. 正在导入表           test.ABC.T_PART_HASH   0行被导入

Error Code -1461: 表 'T_PART_HASH' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555523" ON

"T_PART_HASH" ("ID" ASC);

Error Code -1461: 表 'T_PART_HASH' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555524" ON

"T_PART_HASH" ("ID" ASC);

Error Code -1461: 表 'T_PART_HASH' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555525" ON

"T_PART_HASH" ("ID" ASC);

Error Code -1461: 表 'T_PART_HASH' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555526" ON

"T_PART_HASH" ("ID" ASC);

Error Code -1461: 表 'T_PART_HASH' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555527" ON

"T_PART_HASH" ("ID" ASC);

Error Code -1461: 表 'T_PART_HASH' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555528" ON

"T_PART_HASH" ("ID" ASC);

Error Code -1461: 表 'T_PART_HASH' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555529" ON

"T_PART_HASH" ("ID" ASC);

Error Code -1461: 表 'T_PART_HASH' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555530" ON

"T_PART_HASH" ("ID" ASC);

Error Code -1461: 表 'T_PART_HASH' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555531" ON

"T_PART_HASH" ("ID" ASC);

Error Code -1461: 表 'T_PART_HASH' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555532" ON

"T_PART_HASH" ("ID" ASC);

Error Code -1461: 表 'T_PART_HASH' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555533" ON

"T_PART_HASH" ("ID" ASC);

Error Code -1461: 表 'T_PART_HASH' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555534" ON

"T_PART_HASH" ("ID" ASC);

Error Code -1461: 表 'T_PART_HASH' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555535" ON

"T_PART_HASH" ("ID" ASC);

Error Code -1461: 表 'T_PART_HASH' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555536" ON

"T_PART_HASH" ("ID" ASC);

Error Code -1461: 表 'T_PART_HASH' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555537" ON

"T_PART_HASH" ("ID" ASC);

Error Code -1461: 表 'T_PART_HASH' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555538" ON

"T_PART_HASH" ("ID" ASC);

Error Code -1461: 表 'T_PART_HASH' 上已存在CLUSTER索引

CREATE SCHEMA "ABC" AUTHORIZATION "ABC" CREATE CLUSTER INDEX "INDEX33555539" ON

"T_PART_HASH" ("ID" ASC);

. . 正在导入表           test.ABC.T_RECORD

1000000行被导入

. . 正在导入表           test.ABC.t

4行被导入

Error Code -2352: 无效的同义词名 'S_T'

CREATE SYNONYM "S_T" FOR "test"."T"

Error Code -2352: 无效的同义词名 'S_TEST'

CREATE SYNONYM "S_TEST" FOR "test"."F_TAX"

****************** total ***********************

0 databases input...

1 schemas input...

6 tables input...

0 indexes input...

0 triggers input...

0 views input...

4 stored procedures input...

1 sequences input...

0 roles input...

0 dblinks input...

0 synonyms input...

********************* end **********************

成功终止导入, 但出现警告。可以看到,大部分对象处理都没有问题,但是对于分区表而言,虽然表导入了,但是建立索引的时候出现了很多错误,这说明导入工具处理分区表还存在bug。不过总的来说,expdb和impdb对于exp/imp工具的兼容性还是非常不错的,对于一个没有多少达梦数据库经验的人,只要对Oracle的exp/imp熟悉,就可以很快上手进行操作了。

本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值