Postgres JSONB 字段中的全局替换

2024-01-05

我需要全局替换嵌套 JSON 结构中多个位置出现的特定字符串,该字符串作为 jsonb 存储在 postgres 表中。例如:

{
  "location": "tmp/config",
  "alternate_location": {
    "name": "config",
    "location": "tmp/config"
  }
}

...应该变成:

{
  "location": "tmp/new_config",
  "alternate_location": {
    "name": "config",
    "location": "tmp/new_config"
  }
}

我试过了:

UPDATE files SET meta_data = to_json(replace(data::TEXT, 'tmp/config', 'tmp/new_config'));

不幸的是,这会导致 JSON 格式错误,并带有三重转义引号。

有什么想法如何做到这一点?


使用简单的强制转换jsonb代替to_json(), e.g.:

with files(meta_data) as (
values(
'{
  "location": "tmp/config",
  "alternate_location": {
    "name": "config",
    "location": "tmp/config"
  }
}'::jsonb)
)

select replace(meta_data::text, 'tmp/config', 'tmp/new_config')::jsonb
from files;

                                                replace                                                 
--------------------------------------------------------------------------------------------------------
 {"location": "tmp/new_config", "alternate_location": {"name": "config", "location": "tmp/new_config"}}
(1 row)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Postgres JSONB 字段中的全局替换 的相关文章

随机推荐

  • 检查日期是否是过去的Javascript

    全部 我使用 jQuery UI 作为日期选择器 我正在尝试使用 javascript 检查用户输入的日期是否是过去的日期 这是我的表单代码
  • 计算值太大而无法求幂的马尔可夫链概率

    我使用公式 exp X 作为马尔可夫链的速率 因此选择一个链接相对于另一个链接的比率是 exp X1 exp X2 我的问题是有时X很大 所以exp X 会超出范围double 或者 给定一个 X i 数组 其中一些 X i 太大 以致 e
  • 如何查看矩阵乘法的进度?

    我现在只需要显示矩阵乘法的中间进度 for unsigned int col 0 col
  • uitableview 部分标题内的日期格式,请帮忙

    首先我要说的是 我对 iPhone 开发非常陌生 但我非常努力地学习 因此 非常感谢你们专业人士愿意分享的任何帮助 所以我有一个问题 如果有人能回答我的话那就太棒了 我正在研究更多一项核心数据 并一直在使用苹果开发者网站上找到的核心数据书籍
  • 无法访问 usort() 函数调用内部的全局变量

    我正在尝试使用usort 并在其函数范围内利用全局变量 但没有成功 我已将代码简化为简单的框架以展示我的意思 testglobal 1 function cmp a b global testglobal echo hi testgloba
  • 对哈德逊的“圣杯战争”自动回复“是”

    我们正在使用 grails war 来构建对 hudson 的战争 然后将另一项工作部署到我们的测试环境 问题在于 当 grails war 遇到插件升级时 它会不断要求用户升级某些插件 有没有办法对所有用户输入响应 y 我尝试过 non
  • 服务器端病毒扫描[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 如何读取数据文件?

    如果我有数据file txt我想使用以下命令将数据读取到变量中 set 我怎样才能做到这一点 如何将一行移动到另一行 根据您的评论从文件中读取两行 echo off setLocal EnableDelayedExpansion for f
  • 在异步任务之间自由切换的正确方法是什么?

    假设我有一些异步运行的任务 它们可能是完全独立的 但我仍然想设置任务暂停的点 以便它们可以同时运行 并发运行任务的正确方法是什么 我目前正在使用await asyncio sleep 0 但我觉得这增加了很多开销 import asynci
  • akka 中每个主机的最大 Actor 数量

    akka 的一个盒子上最多可以有多少个 actor public void MyActor extends AkkaActor receive Objet obj so something 1 Is there some limit on
  • 对列表进行子类化的 Pythonic 方式

    这是我的一般问题空间 我通过 I2C 与设备建立了字节 位协议 我有一个命令的 数据库 可以完整描述所有位字段类型 值和枚举 我有一个类来使用数据库和一个 i2c 驱动程序 事务器 以便我可以调用命令并获取响应 MyProtocol Pro
  • Android L 中的警报对话框按钮问题

    我在我的应用程序中创建了一个 AlertDialog 在 Android L AlertDialog 按钮适合对话框之前 但在 Android L 中按钮标签会自动转换标题大小写 并且按钮不适合对话框 请看截图 Android L 安卓奇巧
  • 通过vscode的SSH隧道打开Matplotlib图

    我正在设置一个远程工作站 以便在另一台包含 GPU 的计算机上从我的笔记本电脑运行与机器学习相关的 python 代码 我使用 vscode 的 SSH 远程功能来远程运行和调试我的代码 我对这个界面非常满意 但是 我无法生成来自 matp
  • python身份字典[重复]

    这个问题在这里已经有答案了 可能的重复 如何制作一个 python 字典 返回字典中缺少的键的键 而不是引发 KeyError https stackoverflow com questions 6229073 how to make a
  • 当使用 swift3.0 执行按钮操作时,如何在 ios 移动设备中打开文档文件,例如(.pdf、.doc、.docx)?

    我需要打开UIDocumentPickerViewController它应该允许用户选择所有类型的文件 即我使用的 pdf doc 文件UIDocumentPickerViewController方法 我的代码 UIDocumentPick
  • 使用前导点符号调用 Swift 类工厂方法?

    在最近的一个问题中 发帖者有这样一行有趣的代码 self view backgroundColor whiteColor 看到这一点我很惊讶 我只见过前导点用于枚举值的符号 在这种情况下 backgroundColor属于类型UIColor
  • 在 C# 中解析 json 文件以获取所有部分和属性

    更新 因此 在试图正确表达这个问题时 我误导了响应者 没有给我我需要的答案 抱歉 让我试着澄清一下 我需要能够循环浏览一个 json 文件 该文件的结构不像我在 OP 中指出的那样 它更加随机 OP 文件没有很好地传达这一点 让我尝试描述一
  • asmack XMPP新用户注册

    StackOverflow 的好心人 请帮忙 我已经在我的 ubuntu 机器上设置了一个 ejabberd 服务器 添加了虚拟主机 设置 访问 注册 允许 全部 并注册了一个管理员帐户 我不是 Linux 专家 但我已经成功完成了这个基本
  • 计算“this”和“that”元素之间的元素数量

    我试图知道 DOM 中被单击的元素与某个其他元素的距离有多 远 li item1 li li item2 li li class active item3 li li item4 li li item5 li li item6 li li
  • Postgres JSONB 字段中的全局替换

    我需要全局替换嵌套 JSON 结构中多个位置出现的特定字符串 该字符串作为 jsonb 存储在 postgres 表中 例如 location tmp config alternate location name config locati