You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在RavenDB SQL ETL中将完整文档存入PostgreSQL的jsonb列?

RavenDB SQL ETL导出完整文档到PostgreSQL jsonb列的解决方案

问题背景

在RavenDB 5.4+中配置SQL ETL任务,需将完整文档存入PostgreSQL的jsonb类型data列(无需手动映射字段),但直接传递this或使用JSON.stringify均触发类型不匹配错误:

Npgsql.PostgresException (0x80004005): 42804: column "data" is of type jsonb but expression is of type text

PostgreSQL目标表结构:

create table public.foo
(
    id   text,
    data jsonb
);

解决方案

使用RavenDB ETL脚本内置的toJson()函数,将文档对象序列化为Npgsql可识别的JSON类型,而非普通字符串。

正确的转换脚本:

loadToFoo ({
    id: id(this),
    data: toJson(this)
});

失败原因分析

  • 直接传递this:RavenDB会将对象序列化为字符串,但未标记为JSON类型,Npgsql将其识别为text,与jsonb列类型冲突。
  • JSON.stringify(this):返回的是字符串字面量,同样被识别为text类型,无法自动转换为jsonb。
  • JSON.parse(this):this是文档对象而非字符串,不符合JSON.parse的参数要求,因此抛出Expected string but got Symbol错误。

内容的提问来源于stack exchange,提问作者Julián

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 00:05:32