【问题标题】:Transfer data from U-SQL managed table to Azure SQL Database table将数据从 U-SQL 托管表传输到 Azure SQL 数据库表
【发布时间】:2016-11-30 17:04:06
【问题描述】:

我有一个包含结构化结构化数据的 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 data factory,好像不行

  1. 直接查询 U-SQL 托管表作为数据工厂的输入数据集
  2. 对 Azure SQLDB 执行联合写入查询

因此我有一个中间步骤,我从 U-SQL 托管表复制到 Azure Blob,然后移动到 Azure SQLDB 表。这样做,我会丢失数据类型,并且在插入之前必须再次进行类型转换/转换。

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

【问题讨论】:

    标签: azure-data-factory azure-data-lake u-sql


    【解决方案1】:

    此时您有以下选择:

    1. 将 U-SQL 表导出为 ADLS 或 blob 存储中的中间格式(例如 CSV)。
    2. 使用 ADF 将文件移动到 Azure SQL DB。

    我知道 ADF 团队有一项工作可以为您完成这项工作。我也会请他们回复这个帖子。

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

    【讨论】:

    • 是否已经实现了从数据工厂的 U-SQL 托管表中提取数据的功能?我想遍历 U-SQL 表中的行,但如果不先导出到 CSV,似乎无法做到这一点。
    【解决方案2】:

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

    • 将 USQL 托管表或 USQL 脚本中的数据作为文本文件(.csv、.txt 等)写入 Azure Blob 存储
    • 然后使用 Azure SQL 数据库中的公共预览版 feature - 批量插入 - 将其包装到存储过程中
    • 在 Azure 数据工厂中添加存储过程活动以进行调度

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 2020-12-14
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      相关资源
      最近更新 更多