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

Bam*_*ano 4 azure azure-storage-blobs azure-sql-database

您是否可以使用格式文件在Azure SQL数据库上创建外部表?我正在尝试为我转储到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 ] ]  
    )  
[;]  
Run Code Online (Sandbox Code Playgroud)

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

"'EXTERNAL'附近的语法不正确." 错误.

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
Run Code Online (Sandbox Code Playgroud)

yoa*_*ape 5

问题是(可能)您尝试PolyBase在Azure SQL 数据库上使用,但仅在SQL Server 2016内部部署上支持PolyBase.但是,Azure SQL Datawarehouse支持它:PolyBase Versioned Feature Summary

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

Azure门户中的SQL数据仓库

运行这个:

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  
Run Code Online (Sandbox Code Playgroud)

Azure SQL数据库上将出现如下错误:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'EXTERNAL'.
Run Code Online (Sandbox Code Playgroud)

Azure SQL数据仓库上运行相同的操作将起作用

Command(s) completed successfully.
Run Code Online (Sandbox Code Playgroud)

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