У меня есть столбец в 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.