本工具是用于兼容 Oracle 的逻辑导出导入工具 exp/imp 的,旨在对原 Oracle exp/imp 指令不作修改(或者最小化修改)的情况下实现对 KingbaseES V8.6 的逻辑导出导入。但因数据库架构和实现原理的差异,KingbaseES V8.6 的 exp/imp 工具只做到了主要功能的兼容,有些参数的复杂使用上有一些限制条件,因此除非不得不使用这两个工具的特殊情况,应优先使用 KingbaseES V8.6 的另外的逻辑导出导入工具 sys_dump 、 sys_restore 。
本章节包含以下内容:
exp/imp 设计的目的是为了尽最大可能兼容 Oracle 的exp/imp 工具,适用于基于 Oracle 数据库的应用系统兼容 KingbaseES V8.6 ,应用系统中会有逻辑导出导入功能,它的功能实现是调用的 exp/imp 工具,应用系统不想再实现一遍针对 KingbaseES V8.6 的逻辑导出导入功能模块时,可以直接使用 KingbaseES V8.6 的 exp/imp 工具。
exp/imp 兼容Windows和Linux平台,使用时需要配置servicename,并且在Windows平台使用时需要额外设置PATH路径。
将exp.exe、imp.exe所在目录添加到系统的 Path 环境变量中:
以Windows 7为例,控制面板 – 系统 – 高级系统设置 – 高级 – 环境变量 – 系统变量 – Path,双击Path 在弹出框的变量值中追加exp.exe、imp.exe所在目录( 注意使用英文字符分号间隔不同的路径 ),确定保存。
注意
若没有设置Path,执行任何 exp.exe、imp.exe命令,都会报错“无法将 imp.exe/exp.exe 项识别为cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后重试”。
2.2.2.1. Windows设置servicename的方法 ¶
注意
以下操作针对当前用户名为 kingbase 的情景。
在cmd命令行窗口下执行
set KINGBASE_SYSCONFDIR=C:\\Users\\kingbase\\
在C:\Users\kingbase\新建sys_service.conf文件( 注意文件名与Linux的情况不同,开头无点 )
[kingbase] host=192.168.45.162 port=54321 dbname=xyz
然后在该cmd命令行窗口下就可以使用exp/imp了。
或者可以设置全局的环境变量,以Windows 7为例,控制面板 – 系统和安全 – 系统 – 高级系统设置 – 高级 – 环境变量 – 新建用户变量/新建系统变量,填入“变量名”(KINGBASE_SYSCONFDIR),“变量值”(C:\Users\kingbase\),确定保存。
2.2.2.2. Linux设置servicename的方法 ¶
默认使用 ~/.sys_service.conf 文件( 注意文件名与Windows的情况不同,开头有点 )
[kingbase] host=192.168.45.162 port=54321 dbname=test
注意
dbname不支持指定多个数据库(dbname=test1,test2),也不支持多次指定dbname(dbname=test1换行后再次指定dbname=test2)。
使用 imp 时请留意导入用户的权限,若dmp文件有多个模式,导入用户是普通用户就没有创建模式的权限,就只会导入public模式的数据库对象。