无法在 Azure SQL 数据库上创建 EXTERNAL TABLE

Cannot create EXTERNAL TABLE on Azure SQL Databse

您不能使用格式文件在 Azure SQL 数据库上创建外部 table 吗?我正在尝试创建一个外部 table 到 table 我转储到 blob 存储中。

从这个页面:https://msdn.microsoft.com/en-us/library/dn935021.aspx

-- Create a new external table  
CREATE EXTERNAL TABLE [ database_name . [ schema_name ] . | schema_name. ] table_name   
    ( <column_definition> [ ,...n ] )  
    WITH (   
        LOCATION = 'folder_or_filepath',  
        DATA_SOURCE = external_data_source_name,  
        FILE_FORMAT = external_file_format_name  
        [ , <reject_options> [ ,...n ] ]  
    )  
[;]  

文档不正确还是我遗漏了什么?我似乎无法创建格式文件并继续接收

"Incorrect syntax near 'EXTERNAL'." error.

CREATE EXTERNAL FILE FORMAT [DelimitedText] 
WITH (
    FORMAT_TYPE = DELIMITEDTEXT, 
    FORMAT_OPTIONS (
        FIELD_TERMINATOR = N'~¶~', 
        USE_TYPE_DEFAULT = False
    ), 
    DATA_COMPRESSION = N'org.apache.hadoop.io.compress.GzipCodec')
GO

问题是(可能)您正在尝试使用 PolyBase on an Azure SQL Database, but PolyBase is only supported on on SQL Service 2016 on-premise. It is, however, supported on Azure SQL Datawarehouse: PolyBase Versioned Feature Summary

如果您不是 Azure SQL 数据库而是创建 Azure SQL 数据仓库,您应该拥有可用的 PolyBase 功能,包括创建外部文件格式。

运行这个:

CREATE EXTERNAL FILE FORMAT TextFormat 
WITH (
    FORMAT_TYPE = DELIMITEDTEXT, 
    FORMAT_OPTIONS (
        FIELD_TERMINATOR = N'~¶~', 
        USE_TYPE_DEFAULT = False
    ), 
    DATA_COMPRESSION = N'org.apache.hadoop.io.compress.GzipCodec')
GO  

Azure SQL 数据库上 会给你这样的错误:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'EXTERNAL'.

运行 Azure SQL 数据仓库 上的同样的事情

Command(s) completed successfully.

您将无法使用 Azure SQL 数据仓库来处理 Hadoop 数据库,但支持使用 Azure blob 存储。