在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中的一些东西来考虑解决方案。
1条答案
按热度按时间trnvg8h31#
你需要告诉RavenDB你想要的类型是什么。这是通过直接传递一个值& type来完成的,如下所示: