gpt4 book ai didi

postgresql - Postgres JSONB 规范,用于以二进制格式复制

转载 作者:行者123 更新时间:2023-12-04 02:14:05 24 4
gpt4 key购买 nike

我目前正在尝试通过 JDBC 优化 Postgres 中的数据加载。
我们正在使用带有 FORMAT 'binary' 的 COPY FROM STDIN
现在为字符串、long、uuid 等构建二进制字节数组非常简单。但是在一个实例中,我们在表中有一个 JSONB 字段,我不知道如何将我的 json 对象序列化为二进制 jsonb 格式。 jsonb 是否有任何规范?

注意:我已经排除了只发送 utf-8 二进制序列化 json 字符串的可能性。

最佳答案

您只需要将 json 对象视为普通字符串,但在版本号之前添加 1(字节),这是他们目前支持的唯一版本。确保您指定的字段长度是“string.length”+ 1(用于版本号)

所以,基本上,如果 j 是你的 json 而 dos 是输出流:

val utfBytes = j.toString.getBytes("UTF8")
dos.writeInt(utfBytes.length + 1)
dos.write(Array(1.toByte))
dos.write(utfBytes)

这是来自 postgres 源代码的注释
 /*
104 * jsonb type recv function
105 *
106 * The type is sent as text in binary mode, so this is almost the same
107 * as the input function, but it's prefixed with a version number so we
108 * can change the binary format sent in future if necessary. For now,
109 * only version 1 is supported.
110 */

关于postgresql - Postgres JSONB 规范,用于以二进制格式复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35600070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com