将 JSONB[] 数据类型移入和移出 Postgres 时,在 SSIS 数据流中使用的正确数据类型是什么?
What is the correct datatype to use in the SSIS data flow when moving a JSONB[] datatype to and from Postgres?
我在 Postgres 中有一个声明为 JSONB 数据类型的列,我正在尝试使用 SSIS(无法在当前环境中克隆数据库)将数据从一个 PostgreSQL 服务器移动到另一个服务器).数据存储在 UNICODE 中。我正在使用 Intellisoft OLE DB Provider for PostreSQL
OLE DB 提供程序 - 它可以在这里找到:https://www.pgoledb.com/index.php/purchase。我有桌面版的试用版。
将 JSONB 数据类型加载到 PostgreSQL 服务器时,SSIS 中使用的正确数据类型是什么?我是否使用了正确的 OLE DB 提供程序?
问题:
我可以将 JSON 数据放入数据流并将数据转换为 DT_WSTR(长度 4000)或 DT_NTEXT,没有任何问题。但是,当我尝试将它加载到目标 PostgreSQL 服务器时,我在目标组件上收到以下错误。
[OLE DB Destination [11]] Error: SSIS Error Code DTS_E_OLEDBERROR. An
OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is
available. Source: "Intellisoft OLE DB Provider for PostgreSQL"
Hresult: 0x80004005 Description: "ERROR: column "ColumnName"
is of type jsonb[] but expression is of type character varying LINE 1:
...,,,,,,,,,,,,,,)
我尝试将 DT_NTEXT 和 DT_WSTR 的数据转换为 DT_BYTES。
对于DT_NTEXT,这没有任何作用,因为当我再次打开数据转换组件备份时,它会自动将转换更改回DT_NTEXT。
对于 DT_WSTR,我将 DT_BYTES 长度设置为 4000,但这会导致转换组件出现截断错误(请参阅下面的错误消息)。
[Data Conversion [2]] Error: Data conversion failed while converting
column "ColumnName" (143) to column "Copy of ColumnName" (6). The
conversion returned status value 2 and status text "The value could
not be converted because of a potential loss of data.".
更新
我尝试连接源和目标组件,其中源设置为 Table 视图,这意味着没有 SQL 命令。在源的高级属性编辑器中,JSON 列输出为 DT_NTEXT.
看起来问题出在 OLE DB 驱动程序上。今天发布的补丁增加了对 JSONB[] 数据类型的支持。升级到版本 1.4.0.3590。
我在 Postgres 中有一个声明为 JSONB 数据类型的列,我正在尝试使用 SSIS(无法在当前环境中克隆数据库)将数据从一个 PostgreSQL 服务器移动到另一个服务器).数据存储在 UNICODE 中。我正在使用 Intellisoft OLE DB Provider for PostreSQL
OLE DB 提供程序 - 它可以在这里找到:https://www.pgoledb.com/index.php/purchase。我有桌面版的试用版。
将 JSONB 数据类型加载到 PostgreSQL 服务器时,SSIS 中使用的正确数据类型是什么?我是否使用了正确的 OLE DB 提供程序?
问题:
我可以将 JSON 数据放入数据流并将数据转换为 DT_WSTR(长度 4000)或 DT_NTEXT,没有任何问题。但是,当我尝试将它加载到目标 PostgreSQL 服务器时,我在目标组件上收到以下错误。
[OLE DB Destination [11]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is available. Source: "Intellisoft OLE DB Provider for PostgreSQL" Hresult: 0x80004005 Description: "ERROR: column "ColumnName" is of type jsonb[] but expression is of type character varying LINE 1: ...,,,,,,,,,,,,,,)
我尝试将 DT_NTEXT 和 DT_WSTR 的数据转换为 DT_BYTES。
对于DT_NTEXT,这没有任何作用,因为当我再次打开数据转换组件备份时,它会自动将转换更改回DT_NTEXT。
对于 DT_WSTR,我将 DT_BYTES 长度设置为 4000,但这会导致转换组件出现截断错误(请参阅下面的错误消息)。
[Data Conversion [2]] Error: Data conversion failed while converting column "ColumnName" (143) to column "Copy of ColumnName" (6). The conversion returned status value 2 and status text "The value could not be converted because of a potential loss of data.".
更新
我尝试连接源和目标组件,其中源设置为 Table 视图,这意味着没有 SQL 命令。在源的高级属性编辑器中,JSON 列输出为 DT_NTEXT.
看起来问题出在 OLE DB 驱动程序上。今天发布的补丁增加了对 JSONB[] 数据类型的支持。升级到版本 1.4.0.3590。