postgresql RavenDB ETL到SQL,如何在jsonb列中存储整个文档(“this”)?

jdzmm42g  于 2022-12-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(114)

在RavenDB 5.4+中,我想使用Raven的Npgsql内置工厂配置一个SQL ETL任务,将数据卸载到PostgreSQL数据库。问题是我想将整个文档(this)存储在jsonb数据列中。
问题是:如何实现将下面ETL转换示例中的整个文档(例如this)存储到Postgres?
我的目标是不必手动指定对象Foo的字段/列。
Postgres表格示例:

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

示例ETL转换脚本,在RavenDB中:

loadToFoo ({
    id: id(this),
    data: this // <-- the issue
});

这将导致异常:
异常错误(0x80004005):42804:列"data"的类型为jsonb,但表达式的类型为text
我尝试了以下替代方案:

data: JSON.parse(this)

Error: 
    System.ArgumentException: Expected string but got Symbol
---
data: JSON.stringify(this)

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

我也不确定它是否与RavenDB的转换逻辑有关,或者应该通过Jint运行时或Postgres/Npgsql中的一些东西来考虑解决方案。

trnvg8h3

trnvg8h31#

你需要告诉RavenDB你想要的类型是什么。这是通过直接传递一个值& type来完成的,如下所示:

loadToFoo ({
    id: id(this),
    data: {'Value:' this, 'Type': 'Jsonb'}
});

相关问题