正在将Azure Synapse SQL的输出写入Azure blob

guicsvcw  于 2023-02-25  发布在  其他
关注(0)|答案(2)|浏览(185)

我有Azure Synapse SQL工作区。我希望它:(a)从Azure blob存储读取数据,(b)运行SQL查询,以及(c)将输出写回到Azure blob。
上面的(a)和(B)已经开始工作了--它通过从blob阅读数据来运行查询。我不能将输出写回blob。我只是想知道如何更改我的below SQL查询以写入blob。

SELECT * FROM
 OPENROWSET(BULK 'https://myblob.blob.core.windows.net/testblob/',
 FORMAT = 'CSV')
 WITH
(    
    date1 DATETIME2,
    media varchar(8000),
    callconfig VARCHAR(8000),
    count1 INT
) AS [callconfigTable]

如果有人能帮忙就太好了。谢谢!

taor4pac

taor4pac1#

您可以使用CETAS功能:https://learn.microsoft.com/en-us/azure/synapse-analytics/sql/develop-tables-cetas
这样,您就可以通过TSQL功能将数据写回blob。
否则,您总是使用ADF/synapse管道将选择查询复制到blob中

e3bfsja2

e3bfsja22#

如果要设置"DATA_SOURCE"并将SQL查询输出写入blob存储。请遵循以下方法:
根据MS_doc

    • 我在我的环境中复制了同样的东西。我得到了这个结果。**

首先在数据库上创建主密钥。

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Provide valid_key';

创建数据库作用域和凭据。

--Azure storage account key.

CREATE  DATABASE SCOPED CREDENTIAL AzureStorageCredential

WITH  IDENTITY = '<storage_account_name>', Secret = 'Access_key';

创建外部数据源

CREATE  EXTERNAL  DATA SOURCE AzureStorage with (
TYPE = HADOOP,
LOCATION ='wasbs://<container>@<storage_account>.blob.core.windows.net',
CREDENTIAL = AzureStorageCredential

);

-- CREATE EXTERNAL FORMAT TYPE:
CREATE  EXTERNAL  FILE FORMAT [TextFileFormat] WITH (
FORMAT_TYPE = DELIMITEDTEXT
);
GO
    • 创建外部表格:**
CREATE  EXTERNAL  TABLE [dbo].[dbotest6]

( [PassengerId] int,
[Survived] int
)
WITH
(
LOCATION='/vam/' ,
DATA_SOURCE = AzureStorage ,
FILE_FORMAT = TextFileFormat ,
REJECT_TYPE = VALUE ,
REJECT_VALUE = 0
) ;
    • 注:**

位置应如下图所示:

可以使用INSERT INTO命令直接将数据插入外部表。外部表已连接到存储帐户。

相关问题