SQL Server Polybase создает ОШИБКУ внешней таблицы для Oracle с типом данных столбца TIMESTAMP WITH TIME ZONE

Созданы учетные данные для базы данных и внешний источник данных для Oracle OK. Создание внешней таблицы в таблице Orcle с типом данных столбца TIMESTAMP WITH TIME ZONE не удается независимо от того, какой тип данных я пытаюсь использовать.

CREATE EXTERNAL TABLE MYSCHEMA.MY_EXT_TABLE
(
    SOMECOL NVARCHAR(21) COLLATE Finnish_Swedish_BIN, -- OK
    SOME_DATETIME DATETIME2,    -- OK
    SOME_DATE_COMM DATE,-- OK
    SOME_FLOAT float,-- OK

    SOME_TIMESTAMP datetimeoffset(7)  -- NOK
)
WITH
(
    LOCATION = N'ORACLEDATABASE.SCHEMA.TABLE',
    DATA_SOURCE = my_oracle_ds
)
GO

Сбой с ошибкой: Сообщение 105083, уровень 16, состояние 1, строка 2 105083; Следующие столбцы в пользовательской схеме несовместимы со схемой внешней таблицы для таблицы «SOME_TABLE»: «SOME_TIMESTAMP» не удалось отразить с ошибкой: « Обнаруженный тип серверной части TIMESTAMP (6) WITH TIME ZONE не поддерживается для внешних общих таблиц. '

Я пробовал использовать datetime, datetime2, datetimeoffset, NVARCHAR, но возникла та же ошибка. Есть ли обходной путь для таблиц polybase / generic или мне нужно пропустить эти столбцы?


person Lars Johansson Blank    schedule 22.06.2020    source источник
comment
В сообщении об ошибке написано, что он не поддерживается. Вы можете попробовать создать представление в Oracle, которое преобразует его в date или varchar и вместо этого будет ссылаться на представление.   -  person Nick.McDermaid    schedule 22.06.2020
comment
Да в другом мире ;-), проблема в том, что у меня нет контроля над исходной системой, только доступ для чтения к таблицам   -  person Lars Johansson Blank    schedule 22.06.2020
comment
Внешние таблицы - не единственный способ ссылаться на данные в Oracle из SQL. Каковы ваши фактические ограничения? Вам нужно использовать my_oracle_ds источник данных? У вас есть данные для подключения к Oracle и учетные данные для входа?   -  person Nick.McDermaid    schedule 22.06.2020
comment
Моя идея заключалась в том, чтобы использовать Polybase в SQL Server 2019, чтобы избежать перемещения данных с помощью какого-либо инструмента (SSIS, dbt и т. Д.). Oracle - не единственный источник, поэтому я надеялся создать виртуальную зону посадки для всех исходных данных с одним способом (внешние таблицы) для загрузки данных из источников. Я мог настроить связанный сервер с базой данных Oracle, но надеялся, что этого не будет.   -  person Lars Johansson Blank    schedule 22.06.2020
comment
Я не знаю, есть ли большая разница между связанным сервером и внешней таблицей poly base в этом случае. Вы говорите о федеративных данных, и это не новая идея. Что администраторы баз данных Oracle думают о специальных запросах к своей базе данных?   -  person Nick.McDermaid    schedule 22.06.2020
comment
Его следует использовать для еженощных пакетных загрузок из Oracle, поэтому администратор базы данных согласен с этим. Мы не позволим пользователям круглосуточно работать с произвольными запросами, это контролируемая пакетная загрузка в хранилище данных.   -  person Lars Johansson Blank    schedule 23.06.2020
comment
Если это пакетная загрузка, то это делает процесс ETL намного более подходящим для этого.   -  person Nick.McDermaid    schedule 23.06.2020
comment
Инструмент ETL может быть таким простым (и надежным), как плоские файлы и BCP.   -  person Nick.McDermaid    schedule 23.06.2020
comment
Да, это то, что у нас есть (плоские файлы и bcp). Это просто, надежно и быстро, но у плоских файлов есть ограничения (большие текстовые столбцы с новыми строками и т. Д.), И одной из идей преодоления этих ограничений была Polybase.   -  person Lars Johansson Blank    schedule 23.06.2020


Ответы (1)


person    schedule
comment
TO_TIMESTAMP_TZ - это функция Oracle. Это SQL 2019 - person Nick.McDermaid; 22.06.2020