PG数据向Kingbase移植
来源:互联网 发布:17网络用语 编辑:程序博客网 时间:2024/05/20 09:07
前提:PG和Kingbase的数据库均已创建完成。
1.整理PG数据。
--设备表update my_dev_tab set description = 'dummy' where description is null or description = '';--列字典表update my_col_dict set col_name_chn = 'dummy' where col_name_chn is null or col_name_chn = '';--列字典表update my_col_dict set col_order = UNIQUE_INT where col_order is null;
清空或删除db_health表。
2.从PG导出数据为SQL语句脚本。
pg_dump --dbname=my_db_name --host=my_host_ip_addr --username=my_username --no-password --data-only --exclude-table-data=my_exclude_tables --inserts --column-inserts --encoding=UTF8 --disable-dollar-quoting --file=data_only_insert_sql.backup
3.编辑脚本,使其符合Kingbase要求。
将脚本文件开头的一段:
SET statement_timeout = 0;SET lock_timeout = 0;SET client_encoding = 'UTF8';SET standard_conforming_strings = on;SET check_function_bodies = false;SET client_min_messages = warning;SET row_security = off;SET search_path = smartsys, pg_catalog;
改为
SET client_encoding = 'UTF8';SET standard_conforming_strings = on;SET check_function_bodies = false;SET client_min_messages = warning;SET search_path = smartsys;
4.清理Kingbase中表的数据。
select出schema中所有的表,生成truncate语句。然后执行之。
isql -d MY_DB_NAME -h host_ip -p 54321 -U MY_USER_NAME -W my_password -f 1_ctuncate_tabs.sql
5.禁用Kingbase中的insert触发器。
如果需要,先创建存储过程。然后执行之。
CREATE OR REPLACE PROCEDURE disable_all_insert_triggers()ASDECLARE trigger_cur refcursor; trigger_name_var varchar(128); table_name_var varchar(128); sql_var varchar(1024); BEGIN open trigger_cur for select trigger_name, event_object_table from information_schema.triggers where event_manipulation = 'INSERT' and trigger_name like 'TI_%'; LOOP fetch trigger_cur into trigger_name_var, table_name_var; EXIT WHEN trigger_cur%NOTFOUND; sql_var = 'ALTER TABLE '||table_name_var||' DISABLE trigger '||trigger_name_var; raise notice '%', sql_var; execute immediate sql_var; end LOOP; close trigger_cur; END;call disable_all_insert_triggers();
6.执行SQL语句脚本导入数据,并记录日志。
isql -d MY_DB_NAME -h host_ip -p 54321 -U MY_USER_NAME -W my_password -f 1_data_only_utf8.sql > imp_2_kdb.log 2>&1
7.启用Kingbase中的insert触发器。
如果需要,先创建存储过程。然后执行之。
CREATE OR REPLACE PROCEDURE enable_all_insert_triggers()ASDECLARE trigger_cur refcursor; trigger_name_var varchar(128); table_name_var varchar(128); sql_var varchar(1024); BEGIN open trigger_cur for select trigger_name, event_object_table from information_schema.triggers where event_manipulation = 'INSERT' and trigger_name like 'TI_%'; LOOP fetch trigger_cur into trigger_name_var, table_name_var; EXIT WHEN trigger_cur%NOTFOUND; sql_var = 'ALTER TABLE '||table_name_var||' ENABLE trigger '||trigger_name_var; execute immediate sql_var; end LOOP; close trigger_cur; END;call enable_all_insert_triggers();
8.检查导入结果。
检查记录数:打开SQL脚本文件1_data_only_utf8.sql,统计其中出现“INSERT INTO ”的次数;打开日志文件imp_2_kdb.log,统计其中出现“INSERT 0 1”的次数。两者应相等。同时确认日志文件中没有出现“ERROR”、“WARN”、“错误”、“警告”等字样。
检查中文乱码:打开一张含有中文的表,肉眼检查一下中文字段是否为乱码。
0 0
- PG数据向Kingbase移植
- pg学习_数据更新
- pg学习_数据查询
- Pg-数据同步详解配置
- Kingbase安装
- ceph存储 PG的数据恢复过程
- TPC-H数据导入PG数据库
- PG date类型插入数据说明
- pg查询数据字典表时表名区分大小写
- 向Sigma8634移植DirectFB
- oracle向mysql移植
- 向ARM9移植appWeb
- live555向WM移植
- alsa 向mini2440移植
- tomcat向WebSphere移植
- projectne10向ZedBoard移植
- kingbase 备份数据库
- kingbase常用语句
- 如何快速赚钱:Python爬虫
- Android DVM
- Android调用代码
- 数据分析之旅(三)
- KeySpaceNotification 键空间通知
- PG数据向Kingbase移植
- 优先队列
- 第三章 员工信息维护
- LeetCode 31. Next Permutation
- AngularJS2教程--前序
- iOS内存管理:基本概念与原理
- 制作基本地图-ol3开发
- 滴,学生卡!--Kaggle入门
- URL 传递特殊字符到后台的解决办法