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

时间:2016-11-30 17:04:07

标签: 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,
    Postcode    varchar(15) NULL,
    Age         int NULL,
    DateOfBirth Date NULL,
)

我想将数据从U-SQL托管表传输到Azure SQLDB表,而不会丢失数据类型。

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

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

    有没有更好的方法将数据从U-SQL托管表传输到Azure SQL数据库表而不会丢失数据类型?或者我错过了什么?

2 个答案:

答案 0 :(得分:3)

此时您有以下选项:

  1. 在ADLS或blob存储中将U-SQL表导出为中间格式(例如CSV)。
  2. 使用ADF将文件移动到Azure SQL DB。
  3. 我知道ADF团队有一个工作项目可以帮到您。我也会请他们回复这个帖子。

    由于U-SQL中的容错重试和横向扩展处理,直接从U-SQL脚本写入表会带来很多挑战。这使得原子写入并行处理事务处理更加复杂(参见例如http://www.vldb.org/conf/1996/P460.PDF)。

答案 1 :(得分:2)

现在有另一种方法可以将数据从USQL托管表传输到Azure SQL数据库表。

  • 将USQL管理表或USQL脚本中的数据写入Azure Blob存储文件(.csv,.txt等..)
  • 然后使用Azure SQL数据库中的公共预览feature - BULK INSERT - 将其包装到存储过程中
  • 在Azure数据工厂中添加存储过程活动以进行计划

注意:创建DATABASE SCOPED CREDENTIAL时需要注意一点,请参阅此Stack Overflow question

相关问题