1. 导出:##
方法一:通过sysmodel界面工具导出
- 确认SMARTSYS_HOME/conf目录下的配置文件db_mainten_mng.ini中,db_type=kingbase。
- 打开sysmodel工具,选择数据库维护功能。
- 在数据库导入导出(database dump/restore)标签页下,输入数据库IP地址,点击连接数据库按钮。会看到弹出数据库连接成功的提示。
- 选择文件名,文件名需包含几个部分:数据库类型(例如:kdb表示金仓)、数据库备注(例如:test)、导出日期(例如:20170503),以dmp结尾。
- 如果导出全库,则仅保持“导出整库/dump full”前的复选框选中,直接点击导出按钮(dump)即可;如果导出不含历史数据的库,则还需要勾选“不导出指定表”选项,并在下方的列表中选中scada_event表。如图中蓝色圈所示。
- 等待导出结束后,右侧命令显示窗口会显示导出命令行,以及操作执行提示。
方法二:通过命令行导出
导出全库:
sys_dump --host=localhost --port=54321 -U smartsys -W****** --encoding=UNICODE --schema=smartsys --format=c --file=D:/tmp/kdb_test_20170503.dmp
导出全库(排除历史表):
sys_dump --host=localhost --port=54321 -U smartsys -W****** --encoding=UNICODE --schema=smartsys --format=c -T scada_event --file=D:/tmp/kdb_test_20170503.dmp
2. 导入:##
方法一:通过sysmodel界面工具导入
- 确认SMARTSYS_HOME/conf目录下的配置文件db_mainten_mng.ini中,db_type=kingbase。
- 打开sysmodel工具,选择数据库维护功能。
- 填好IP地址,连接数据库。
- 选择数据转储文件。
- 如果库中原先有数据,务必先点击“清除数据”按钮。
- 点击导入按钮。
- 【重要】导入结束后需确认导入过程中没有出现警告。
方法二:通过命令行导入
导入全库:
sys_restore --host=localhost --port=54321 -USMARTSYS -W****** --schema=SMARTSYS -c -x --no-tablespace-definition -dSMARTSYS D:/tmp/kdb_test_20170503.dmp
【注意】上述命令行导入过程会自动清除原先的数据库。
3. 执行升级脚本:##
现场数据库需要升级时,执行升级脚本是一个常见的办法。脚本通常是一个后缀名为sql的文件(例如upgrade.sql)。有两种方式可以执行。
方法一:使用数据库自带图形界面工具执行。
- 打开金仓数据库“查询分析器”,连接数据库。
- 打开一个编辑窗口,选择“SMARTSYS”数据库。
- 将upgrade.sql文件中的内容复制粘贴到编辑窗口中,按“一个小人跑步”按钮执行。
- 执行完成后要注意检查下面的窗口中是否有显示“0条语句执行失败”。
方法二:使用isql命令行执行。
isql -Usmartsys -W****** -h127.0.0.1 -p54321 -dsmartsys -fupgrade.sql
【注意】
一般的数据库管理语句(DML语句,包含select,insert,update,delete等)都可以在一行内结束并以分号结尾。但是部分数据库描述语句(DDL语句,包含create,alter,drop等)或由begin-end包住的匿名块,往往无法在一行内结束。以下面的函数创建脚本为例:
create or replace function test_f1()
returns void as
a_var int;
begin
select 1 into a_var;
end;
如果在查询分析器中,可以直接执行,但是在isql中直接执行会报错,必须在其开头和结尾处增加“块标签”。如下:
\set SQLTERM /
create or replace function test_f1()
returns void as
a_var int;
begin
select 1 into a_var;
end;
/
\set SQLTERM ;
其中:
“\set SQLTERM /”是块起始标签;
“/”是块执行标签;
“\set SQLTERM ;”是块结束标签(分号前必须要有一个空格)。
【问题是】:带“块标签”的脚本不能在查询分析器中执行,不带“块标签”的脚本不能在isql中执行。
所以所有发往现场的升级脚本统一不带“块标签”,如果现场希望在isql中执行升级脚本,请在***每一个***块或匿名块的前面***自行***添加“起始标签”,并且在***每一个***块或匿名块的后面***自行***添加“执行标签”和“结束标签”。或者指明请研发人员代为添加。