Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
在本文中,你将了解如何使用无服务器 SQL 池将查询结果存储到存储。
先决条件
第一步是创建将在其中执行查询的数据库。 然后通过对该数据库执行安装脚本来初始化这些对象。 此安装脚本将创建数据源、数据库范围的凭据和用于读取这些示例中数据的外部文件格式。
按照本文中的说明创建数据源、数据库范围的凭据以及用于将数据写入到输出存储的外部文件格式。
创建外部表作为选择
可以使用 CREATE EXTERNAL TABLE AS SELECT (CETAS) 语句将查询结果存储到存储。
注释
更改查询中的以下值以反映你的环境:
- mydbname - 将其更改为创建的数据库的名称
- storage-account-sas - 用于要写入结果的存储帐户的共享访问签名
- your-storage-account-name - 您希望写入结果的存储帐户名称(请确保有一个名为“csv”的容器,或者在此处更改容器的名称)
USE [mydbname];
GO
CREATE DATABASE SCOPED CREDENTIAL [SasTokenWrite]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'storage-account-sas';
GO
CREATE EXTERNAL DATA SOURCE [MyDataSource] WITH (
LOCATION = 'https://your-storage-account-name.blob.core.chinacloudapi.cn/csv', CREDENTIAL = [SasTokenWrite]
);
GO
CREATE EXTERNAL FILE FORMAT [ParquetFF] WITH (
FORMAT_TYPE = PARQUET,
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
GO
CREATE EXTERNAL TABLE [dbo].[PopulationCETAS] WITH (
LOCATION = 'populationParquet/',
DATA_SOURCE = [MyDataSource],
FILE_FORMAT = [ParquetFF]
) AS
SELECT
*
FROM
OPENROWSET(
BULK 'csv/population-unix/population.csv',
DATA_SOURCE = 'sqlondemanddemo',
FORMAT = 'CSV', PARSER_VERSION = '2.0'
) WITH (
CountryCode varchar(4),
CountryName varchar(64),
Year int,
PopulationCount int
) AS r;
注释
必须修改此脚本,并更改目标位置以再次执行。 无法在已有某些数据的位置上创建外部表。
使用外部表
可以像使用常规外部表一样,使用通过 CETAS 创建的外部表。
注释
更改查询中的第一行(即 [mydbname]),以便使用你创建的数据库。
USE [mydbname];
GO
SELECT
CountryName, PopulationCount
FROM PopulationCETAS
WHERE
[Year] = 2019
ORDER BY
[PopulationCount] DESC;
注解
存储结果后,无法修改外部表中的数据。 不能重复此脚本,因为 CETAS 不会覆盖在上一次执行中创建的基础数据。
支持的输出类型目前只有 Parquet 和 CSV。
相关内容
若要详细了解如何查询不同的文件类型,请参阅以下文章:查询单个 CSV 文件、查询 Parquet 文件和查询 JSON 文件。