背景
PostgreSql数据需要同步到oracle,由于GP数据库查出来的数据有单引号导致无法插入数据到oracle.
gp数据库查出来的数据是这样的:
mother’s day 在INSERT到oracle中会被解析为 'mother’s day’这样,所以报错无法插入。
解决方案
将包含单引号的字段替换转义成oracle可以转化的字符
SELECT
to_char(COALESCE (publish_time, now()),'yyyy-mm-dd hh24:mi:ss') AS ROW_LASTUPDATE_TIME,
REPLACE ( module_key,chr(39),'''||''''''') AS kkk -- **重点在这里**
FROM
t_ext_rec_publish;
kkk是被替换之后的结果,转译成mother’||’’'s day 就可以插入数据库中了
oracle REPLACE 函数是用另外一个值来替代串中的某个值。
REPLACE ( module_key,chr(39),’’’||’’’’’’’)
- chr(39) 代表单引号 ’
- ‘’’||’’’’’’’ 转义之后是这样的 ‘||’’’
oracle单引号转义是左1右3,或者左3右1