升级脚本需要更新带有特殊字符的值(换行、单引号、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编码后特殊字符(如单引号、换行)等都不是问题了,编码后得到的就是一行字串,不用担心出幺蛾子。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/135133.html