Azure data factory 将数据从U-SQL托管表传输到Azure SQL数据库表

Azure data factory 将数据从U-SQL托管表传输到Azure SQL数据库表,azure-data-factory,azure-data-lake,u-sql,Azure Data Factory,Azure Data Lake,U Sql,我有一个U-SQL托管表,其中包含模式化的结构化数据 CREATE TABLE [AdlaDb].[dbo].[User] ( UserGuid Guid, Postcode string, Age int? DateOfBirth DateTime?, ) 和一个Azure SQL数据库表 CREATE TABLE [SqlDb].[dbo].[User] ( UserGuid uniqueidentifier NOT NULL, Pos

我有一个U-SQL托管表,其中包含模式化的结构化数据

CREATE TABLE [AdlaDb].[dbo].[User]
(
    UserGuid Guid,
    Postcode string,
    Age int?
    DateOfBirth DateTime?,
)
和一个Azure SQL数据库表

CREATE TABLE [SqlDb].[dbo].[User]
(
    UserGuid    uniqueidentifier NOT NULL,
    Postcode    varchar(15) NULL,
    Age         int NULL,
    DateOfBirth Date NULL,
)
我希望在不丢失数据类型的情况下将数据从U-SQL托管表传输到Azure SQLDB表

我正在使用azure数据工厂,似乎我不能

  • 直接查询U-SQL托管表作为数据工厂的输入数据集
  • 对Azure SQLDB执行联邦写入查询
  • 因此,我有一个中间步骤,从U-SQL托管表复制到Azure Blob,然后移动到Azure SQLDB表。这样做,我将丢失数据类型,并且在插入之前必须在稍后再次进行类型转换/转换


    有没有更好的方法可以在不丢失数据类型的情况下将数据从U-SQL托管表传输到Azure SQL数据库表?还是我遗漏了什么?

    此时,您可以选择以下选项:

  • 将U-SQL表导出为ADLS或blob存储中的中间格式(例如CSV)
  • 使用ADF将文件移动到Azure SQL DB中
  • 我知道ADF团队有一项工作要为您完成。我也会要求他们回复这个帖子


    由于U-SQL中的容错重试和扩展处理,从U-SQL脚本直接写入表有很多挑战。这使得原子并行写入事务存储变得更加复杂(请参见示例)。

    现在有另一个选项可以将数据从USQL托管表传输到Azure SQL数据库表

    • 将USQL托管表或USQL脚本中的数据作为文本文件(.csv、.txt等)写入Azure Blob存储
    • 然后利用Azure SQL数据库中的公共预览-批量插入-将其包装到存储过程中
    • 将Azure Data Factory中的存储过程活动添加到计划中

    注意:在创建数据库范围的凭据时,有一件事需要注意,请参阅此堆栈溢出

    是否已实现从数据工厂的U-SQL托管表中提取数据?我想迭代U-SQL表中的行,但如果不先导出到CSV,似乎无法完成此操作。