为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:centos7.6
【CPU】:
【问题描述】*:
前提:DM的编码必须是UTF-8,不能修改
我在DM8数据库中创建了一个DBlink ; remote_db_link
我想把remote_db_link中DZJC20250403模式中COCT_CONTRACT
表的FFJ字段抽取成一个物化视图 FFJ是VARCHAR2(4000)类型的
在创建物化视图时:
CREATE MATERIALIZED VIEW COCT_CONTRACT
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
AS select
FFJ AS FFJ
from DZJC20250403.COCT_CONTRACT@remote_db_link;
提示[-7158]:远程操作符执行失败,错误详情[oracle column-level return code [1406]]
sql换成
CREATE MATERIALIZED VIEW COCT_CONTRACT
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
AS select
CAST(FFJ as VARCHAR(8000)) AS FFJ
from DZJC20250403.COCT_CONTRACT@remote_db_link;
会提示 [-7158]:远程操作符执行失败,错误详情[ORA-00910: specified length too long for its datatype]
换成
CREATE MATERIALIZED VIEW COCT_CONTRACT
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
AS select
CAST(FFJ AS TEXT) AS FFJ
from DZJC20250403.COCT_CONTRACT@remote_db_link;
提示[-7158]:远程操作符执行失败,错误详情[ORA-00902: invalid datatype]
换成
CREATE MATERIALIZED VIEW COCT_CONTRACT
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
AS select
CAST(FFJ AS CLOB) AS FFJ
from DZJC20250403.COCT_CONTRACT@remote_db_link;
提示 [-7158]:远程操作符执行失败,错误详情[ORA-00932: inconsistent datatypes: expected - got CLOB]
换成
CREATE MATERIALIZED VIEW COCT_CONTRACT
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
AS select
CAST(TO_BLOB(FFJ) AS CLOB) AS FFJ
from DZJC20250403.COCT_CONTRACT@remote_db_link;
提示 [-6147]:无效的十六进制数字
换成
CREATE MATERIALIZED VIEW COCT_CONTRACT
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
AS select
CAST(TO_BLOB(HEX(FFJ)) AS CLOB) AS FFJ
from DZJC20250403.COCT_CONTRACT@remote_db_link;
会提示[-7158]:远程操作符执行失败,错误详情[oracle column-level return code [1406]]
请问下我应该怎么操作才可以成功创建物化视图???
在创建DBLINK的SQL中最后面添加以下属性试试
OPTION (LOCAL_CODE='GBK', CONVERT_MODE=1,DATA_CHARSET='GBK')
创建达梦本地表用于缓存数据
CREATE TABLE TMP_COCT_CONTRACT (
FFJ TEXT
);
通过 INSERT INTO...SELECT 抽取数据到本地:
INSERT INTO TMP_COCT_CONTRACT (FFJ)
SELECT FFJ
FROM DZJC20250403.COCT_CONTRACT@remote_db_link;
然后基于本地表创建物化视图:
CREATE MATERIALIZED VIEW COCT_CONTRACT
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
AS
SELECT * FROM TMP_COCT_CONTRACT;