你好,
CREATE EXTERNAL FILE FORMAT 是基于 PolyBase 的,这意味着您需要安装 PolyBase 并启用它。如果您没有这样做,您将会收到此错误。
在以下过程中,您可以看到一些相关元素的部分,这些元素可以在不使用 PolyBase 的情况下使用,而其他一些则需要更多的步骤... 让我们来看一下这个例子:
create database MyLocalDB;
GO
use MyLocalDB
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My!Simple@Pass#for$Lecture'
GO
CREATE DATABASE SCOPED CREDENTIAL MyAzureBlobStorageCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<enter you blob key here>';
GO
让我们在SSMS中创建外部数据源:
CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://EnterYourBlobNameHere.blob.core.windows.net/invoices',
CREDENTIAL= MyAzureBlobStorageCredential
);
GO
您可能会收到一个错误信息:"Incorrect syntax near BLOB_STORAGE"。这是SSMS解析器的问题,而不是查询的问题。您可以在SOS中执行相同的查询,而不是在SSMS中执行。由于某些原因,在使用Azure SQL Database时,此查询在SSMS中执行良好。
SELECT * FROM sys.external_data_sources
GO
现在我们来谈一下你的问题
CREATE EXTERNAL FILE FORMAT myfileformat
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (FIELD_TERMINATOR ='|')
);
还需更多工作……
安装 "Java 运行环境" (需要版本 7 或以上)
https://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
运行 SQL Server 安装并添加特性:"PolyBase Query Service for External Data"
使用 sp_configure
根据所使用的数据源启用 PolyBase 源配置
例如,若要连接到 Hadoop,则需要执行此最后一步:
USE master;
GO
EXEC sp_configure 'show advanced option', '1';
RECONFIGURE;
GO
EXEC sp_configure 'hadoop connectivity', 1;
RECONFIGURE;
GO
你可以在官方文档中获取有关此问题的更多信息:https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/polybase-connectivity-configuration-transact-sql
确认 PolyBase 是否已安装:
SELECT SERVERPROPERTY ('IsPolybaseInstalled') AS IsPolybaseInstalled;
GO
尝试执行您的查询
CREATE EXTERNAL FILE FORMAT myfileformat
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (FIELD_TERMINATOR ='|')
);
如果您遇到上述错误,则需要:(1) 使用SQL Server配置管理器启用TCP。 (2) 确保PolyBase服务正在运行。
CREATE EXTERNAL FILE FORMAT myfileformat
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (FIELD_TERMINATOR ='|')
);
就这样了 :-)
现在你可以使用外部文件格式并创建外部表格了
我希望这对你有用 :-)