日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PG数据向Kingbase移植

發(fā)布時(shí)間:2025/5/22 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PG数据向Kingbase移植 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前提:PG和Kingbase的數(shù)據(jù)庫均已創(chuàng)建完成。
1.整理PG數(shù)據(jù)。

--設(shè)備表 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導(dǎo)出數(shù)據(jù)為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中表的數(shù)據(jù)。
select出schema中所有的表,生成truncate語句。然后執(zhí)行之。

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觸發(fā)器。
如果需要,先創(chuàng)建存儲(chǔ)過程。然后執(zhí)行之。

CREATE OR REPLACE PROCEDURE disable_all_insert_triggers() AS DECLAREtrigger_cur refcursor;trigger_name_var varchar(128);table_name_var varchar(128);sql_var varchar(1024);BEGINopen trigger_cur for select trigger_name, event_object_table from information_schema.triggers where event_manipulation = 'INSERT' and trigger_name like 'TI_%';LOOPfetch 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.執(zhí)行SQL語句腳本導(dǎo)入數(shù)據(jù),并記錄日志。

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觸發(fā)器。
如果需要,先創(chuàng)建存儲(chǔ)過程。然后執(zhí)行之。

CREATE OR REPLACE PROCEDURE enable_all_insert_triggers() AS DECLAREtrigger_cur refcursor;trigger_name_var varchar(128);table_name_var varchar(128);sql_var varchar(1024);BEGINopen trigger_cur for select trigger_name, event_object_table from information_schema.triggers where event_manipulation = 'INSERT' and trigger_name like 'TI_%';LOOPfetch 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.檢查導(dǎo)入結(jié)果。
檢查記錄數(shù):打開SQL腳本文件1_data_only_utf8.sql,統(tǒng)計(jì)其中出現(xiàn)“INSERT INTO ”的次數(shù);打開日志文件imp_2_kdb.log,統(tǒng)計(jì)其中出現(xiàn)“INSERT 0 1”的次數(shù)。兩者應(yīng)相等。同時(shí)確認(rèn)日志文件中沒有出現(xiàn)“ERROR”、“WARN”、“錯(cuò)誤”、“警告”等字樣。

檢查中文亂碼:打開一張含有中文的表,肉眼檢查一下中文字段是否為亂碼。

總結(jié)

以上是生活随笔為你收集整理的PG数据向Kingbase移植的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。