Какой тип данных используется в потоке данных служб SSIS при перемещении типа данных JSONB в Postgres и из него? - PullRequest
0 голосов
/ 10 марта 2020

У меня есть столбец в Postgres, который объявлен как тип данных JSONB, и я пытаюсь переместить данные с одного сервера PostgreSQL на другой, используя SSIS (не удается клонировать БД в текущей среде). Данные хранятся в UNICODE. Я использую Intellisoft OLE DB Provider for PostreSQL OLE DB Provider - его можно найти здесь: https://www.pgoledb.com/index.php/purchase. У меня есть пробная версия Desktop Edition.

Какой тип данных используется в SSIS при загрузке типа данных JSONB на сервер PostgreSQL? Использую ли я правильный поставщик OLE DB?

Проблема:

Я могу получить данные JSON в поток данных и привести их как DT_WSTR (длина 4000) или DT_NTEXT без каких-либо проблемы. Но при попытке загрузить его на целевой сервер PostgreSQL я получаю следующую ошибку на целевом компоненте:

[Назначение OLE DB [11]] Ошибка: код ошибки SSIS DTS_E_OLEDBERROR. Произошла ошибка OLE DB. Код ошибки: 0x80004005. Доступна запись OLE DB. Источник: «Поставщик Intellisoft OLE DB для PostgreSQL» Hresult: 0x80004005 Описание: « ОШИБКА: column « ColumnName » имеет тип jsonb [], но выражение имеет тип символов, меняющихся LINE 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, но это приводит к ошибке усечения компонента преобразования (см. Сообщение об ошибке ниже).

[Преобразование данных [2]] Ошибка: преобразование данных ошибка при преобразовании столбца «Имя столбца» (143) в столбец «Копия имени столбца» (6). Преобразование вернуло значение состояния 2 и текст состояния «Значение не удалось преобразовать из-за потенциальной потери данных.».

* 103 0 * Обновление

Я попытался подключить компонент Источник и пункт назначения, где для источника задано табличное представление, что означает отсутствие команды SQL. В редакторе расширенных свойств источника столбец JSON выводится как DT_NTEXT.

...