在Postgres之间移动JSONB[]数据类型时,SSIS数据流中使用的正确数据类型是什么



我在Postgres中有一列被声明为JSONB数据类型,我正试图使用SSIS将数据从一个PostgreSQL服务器移动到另一个服务器(在当前环境中无法克隆DB(。数据存储在UNICODE中。我使用的是Intellisoft OLE DB Provider for PostreSQLOLE DB Provider,它可以在这里找到:https://www.pgoledb.com/index.php/purchase.我有桌面版的试用版。

将JSONB数据类型加载到PostgreSQL服务器时,SSIS中使用的正确数据类型是什么?我是否使用了正确的OLE DB提供程序?

问题:

我可以将JSON数据获取到数据流中,并将数据转换为DT_WSTR(长度4000(或DT_NTEXT,而不会出现任何问题。但是,当我试图将它加载到目标PostgreSQL服务器时,我在目标组件上得到了以下错误。

[OLE DB Destination[11]]错误:SSIS错误代码DTS_E_OLEDBERROR。一发生OLE DB错误。错误代码:0x80004005。OLE DB记录是可获得的来源:"PostgreSQL的Intellisoft OLE DB提供程序"Hresult:0x80004005描述:">错误:column"ColumnName">的类型为jsonb[],但表达式的类型为character variable第1行:…$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30(

我尝试在DT_NTEXT和DT_WSTR上执行到DT_BYTES的数据转换。

对于DT_NTEXT,这没有任何作用,因为当我再次打开数据转换组件备份时,它会自动将转换更改回DT_NTEXT。

对于DT_WSTR,我将DT_BYTES长度设置为4000,但这会导致转换组件出现截断错误(请参阅下面的错误消息(。

[Data Conversion[2]错误:转换时数据转换失败"ColumnName"列(143(到"ColumnName的副本"列(6(。这个转换返回状态值2和状态文本"该值可以由于潜在的数据丢失而无法转换。".

更新

我尝试连接源和目标组件,其中源设置为表视图,这意味着没有SQL命令。在源的Advanced Properties编辑器中,JSON列被输出为DT_NTEXT。

看起来问题出在OLE DB驱动程序上。今天发布的一个补丁增加了对JSONB[]数据类型的支持。升级至1.4.0.3590版本。

https://www.pgoledb.com/index.php/products/history

相关内容

最新更新