为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:windows
【CPU】:
【问题描述】*: mysql迁移到DM8;处理关键字问题,找不到文档中说的关键字视图 V$RESERVED_WORDS
望回复,谢谢
V$RESERVED_WORDS为系统视图,可通过语句直接查询:
select * from V$RESERVED_WORDS;
以下是 V$RESERVED_WORDS 视图中各字段的含义,同时也可以查询数据库手册:
字段名 说明
KEYWORD 关键字的名字
LENGTH 关键字的长度
RESERVED 是否是保留字(Y:是,N:否)
RES_SQL 是否是 SQL 保留字,不能作 SQL 中的标识符
RES_PL 是否是 DMSQL 程序保留字,不能作 DMSQL 程序语句块中的标识符
RES_SCHEMA 是否是模式保留字,不能作模式标识符
RES_VARIABLE 是否是变量保留字,不能作变量标识符
RES_ALIAS 是否是别名保留字,不能作别名标识符
RES_FIXED 关键字是否可以 EXCLUDE(Y:不可以,N:可以)
若要查询当前数据库中配置了哪些屏蔽的关键字可通过下面语句查询:
SELECT PARA_NAME,PARA_VALUE FROM V$DM_INI WHERE PARA_NAME IN ('EXCLUDE_RESERVED_WORDS');
当程序遇到关键字问题,不建议直接配置到数据库参数中,一是因为要重启,而是因为全局影响,若多个应用使用一个实例时可能引发异常,而是建议通过加双引号解决或者再jdbc的连接串增加屏蔽关键字,而,例如:
--用双引号处理
SELECT "percent", "top" FROM tt;
--在jdbc连接串中配置屏蔽关键字
jdbc:dm://192.168.80.133:5236?keywords=(percent, top)

SELECT PARA_NAME,PARA_VALUE FROM V$DM_INI WHERE PARA_NAME IN ('EXCLUDE_RESERVED_WORDS');可以查询这个,去看库里的关键字信息。