升级脚本需要更新带有特殊字符的值(换行单引号markdown文本)到字段中,如何兼容性更好

Posted 石头StoneWang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了升级脚本需要更新带有特殊字符的值(换行单引号markdown文本)到字段中,如何兼容性更好相关的知识,希望对你有一定的参考价值。

升级脚本需要更新带有特殊字符的值(换行、单引号、markdown文本)到字段中,如何兼容性更好

背景

有的时候,你的升级脚本(sql)需要往数据库表写入类似markdown这种带有换行甚至特殊字符的值。

你把markdown的文档源码直接写进 set val='你的markdown文本'是可以成功执行,但是有时候也会遇到报错(环境复杂),例如

有没有兼容性较好、健壮的方式?

操作

思路:利用base64的字串作为字面量,通过SQL函数转为我们本来应该书写的值,更新到表里。

例如将如下sql

update my_dict_table set dict_value='你要更新的字串
可能有换行的
如果有单引号会导致出错你得转义' where ...

改写为如下(我以pgsql为例,可能其他库会有不同写法)

update my_dict_table set dict_value=CONVERT_FROM(decode('你的base64字符串', 'base64'),'UTF-8') where ...

即将

你要更新的字串
可能有换行的
如果有单引号会导致出错你得转义

进行base64的编码后写入到 decode 里头

注意:需要 CONVERT_FROM,不然写入的值会有问题

由于base64编码后特殊字符(如单引号、换行)等都不是问题了,编码后得到的就是一行字串,不用担心出幺蛾子。

以上是关于升级脚本需要更新带有特殊字符的值(换行单引号markdown文本)到字段中,如何兼容性更好的主要内容,如果未能解决你的问题,请参考以下文章

Python小知识点汇总(持续更新)

json特殊字符都有哪些

shell从入门到精通各种引号括号用法总结

Linux系统shell工具打印输出

在Javascript中显示带有引号和换行符的PHP字符串(警报)[重复]

JSON特殊字符的处理