Azure 数据工厂导出 SQL 输出到 blob 存储
Azure Data Factory Export SQL output to blobstorage
我正在使用 Azure SQL 数据库,其物理 table 具有以下结构:
create table ind_metadata_reportages.ind_datadictionary (
code nvarchar(250)
,name nvarchar(250)
,EntiteitNaam nvarchar(255)
,AttribuutNaam nvarchar(250)
,Contstraint nvarchar(250)
,DataType nvarchar(250)
)
要从 table 内容生成 DDL,我使用以下语句:
declare @table_name varchar(255)
, @attribute_name varchar(255)
, @datatype varchar(255)
, @sql nvarchar(max)
, @previous_table varchar(255) = ''
, @schema varchar(255) = 'ind_logische_datamodel'
, @ind_next int = 0
declare c_ddl cursor for
select entiteitnaam, attribuutnaam, datatype
from ind_metadata_reportages.ind_datadictionary
open c_ddl
fetch next from c_ddl into @table_name, @attribute_name, @datatype
while @@fetch_status = 0
begin
-- start van de tabel
if @previous_table = '' and @ind_next = 0
begin
set @previous_table = @table_name
set @sql = 'CREATE TABLE ' + @schema + '.' + @previous_table + '(
' + @attribute_name + ' ' + @datatype
set @ind_next = 1
end
-- einde van de tabel
if @previous_table != @table_name and @ind_next = 0
set @sql = @SQL + N' );
CREATE TABLE ' + @schema + '.' + @previous_table + '( '
+ @attribute_name + ' ' + @datatype
set @previous_table = @table_name
if @previous_table = @table_name and @ind_next = 0
BEGIN
set @sql = @sql + N'
, ' + @attribute_name + ' ' + @datatype
set @ind_next = 1
END
set @ind_next = 0
fetch next from c_ddl into @table_name, @attribute_name, @datatype
end
print @sql
close c_ddl
deallocate c_ddl
我想将最后打印的输出保存在 Azure Blob 存储上的文件中。你知道我如何使用 Azure 数据工厂解决这个问题吗?
非常感谢
埃里克
您可以通过多种方式执行此操作。
- 围绕它创建一个存储过程,然后return将您的打印作为一列数据集。
- 在您的数据库中创建一个临时 table 并将您的输出保存在 int 中。
在 ADF 中,您可以执行从存储过程或 table 到 Blob 存储中文件的正常复制功能。
我正在使用 Azure SQL 数据库,其物理 table 具有以下结构:
create table ind_metadata_reportages.ind_datadictionary (
code nvarchar(250)
,name nvarchar(250)
,EntiteitNaam nvarchar(255)
,AttribuutNaam nvarchar(250)
,Contstraint nvarchar(250)
,DataType nvarchar(250)
)
要从 table 内容生成 DDL,我使用以下语句:
declare @table_name varchar(255)
, @attribute_name varchar(255)
, @datatype varchar(255)
, @sql nvarchar(max)
, @previous_table varchar(255) = ''
, @schema varchar(255) = 'ind_logische_datamodel'
, @ind_next int = 0
declare c_ddl cursor for
select entiteitnaam, attribuutnaam, datatype
from ind_metadata_reportages.ind_datadictionary
open c_ddl
fetch next from c_ddl into @table_name, @attribute_name, @datatype
while @@fetch_status = 0
begin
-- start van de tabel
if @previous_table = '' and @ind_next = 0
begin
set @previous_table = @table_name
set @sql = 'CREATE TABLE ' + @schema + '.' + @previous_table + '(
' + @attribute_name + ' ' + @datatype
set @ind_next = 1
end
-- einde van de tabel
if @previous_table != @table_name and @ind_next = 0
set @sql = @SQL + N' );
CREATE TABLE ' + @schema + '.' + @previous_table + '( '
+ @attribute_name + ' ' + @datatype
set @previous_table = @table_name
if @previous_table = @table_name and @ind_next = 0
BEGIN
set @sql = @sql + N'
, ' + @attribute_name + ' ' + @datatype
set @ind_next = 1
END
set @ind_next = 0
fetch next from c_ddl into @table_name, @attribute_name, @datatype
end
print @sql
close c_ddl
deallocate c_ddl
我想将最后打印的输出保存在 Azure Blob 存储上的文件中。你知道我如何使用 Azure 数据工厂解决这个问题吗?
非常感谢 埃里克
您可以通过多种方式执行此操作。
- 围绕它创建一个存储过程,然后return将您的打印作为一列数据集。
- 在您的数据库中创建一个临时 table 并将您的输出保存在 int 中。
在 ADF 中,您可以执行从存储过程或 table 到 Blob 存储中文件的正常复制功能。