技术开发 频道

专家点评:达梦6.0试用之导入导出

  下面看看导出整个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的imp命令兼容,但是处理方式还是有所区别的。再导入的时候选择的是全用户导出的dmp文件,不过导入的时候明确指定了导入表T,impdb在导入过程中,确实过滤了表,只导入T表的数据,但是用户中的其他对象,比如同义词被再次导入。这一点应该算是个小bug吧。

0
相关文章