将数据从 Azure Blob 存储复制到 Azure SQLDB 时,Azure 数据工厂错误地复制单元格值

Posted

技术标签:

【中文标题】将数据从 Azure Blob 存储复制到 Azure SQLDB 时,Azure 数据工厂错误地复制单元格值【英文标题】:Azure Data Factory Copying a cell value incorrectly when copying data from Azure Blob Storage To Azure SQLDB 【发布时间】:2020-06-04 05:14:07 【问题描述】:

我正在使用 Azure 构建一个购物清单应用程序。

目前,我有一个将 json 文件写入 blob 存储的 azure 函数。这是我当前的 blob 存储的样子: 当 Azure 数据工厂将数据复制到我的 SQL DB 时,它是这样的: 这是我用来创建表的代码:

-- Create a new table called 'groceryitems' in schema 'grocerylistapp'
-- Drop the table if it already exists
IF OBJECT_ID('grocerylistapp.groceryitems', 'U') IS NOT NULL
DROP TABLE grocerylistapp.groceryitems
GO

CREATE SCHEMA grocerylistapp
GO

-- Create the table in the specified schema
CREATE TABLE grocerylistapp.groceryitems
(
    id INT IDENTITY(1,1), -- Primary Key column
    epoch DATE,
    [name] VARCHAR(50),
    PRIMARY KEY CLUSTERED([id] ASC)
    -- Specify more columns here
);
GO
1

奇怪的是,当我最初使用 Data Warehouse / Synapse 执行此操作时,我没有遇到此问题,因此我假设它与 SQL DB 有关。

我还想补充一点,它随机决定扭曲一行,如果我在 blob 存储中有 3、4 或 5 个项目,它会选择一行并扭曲它,如屏幕截图所示。它并不总是相同的项目。

谢谢。

【问题讨论】:

【参考方案1】:

首先,确保您选择了json 格式文件作为Soure 数据集。

这是我测试的步骤,效果很好。

来自 Blob 存储的源数据集(json 格式):

导入源数据集的模式:

接收器数据集设置:

映射设置:

运行管道:

查看表grocerylistapp.groceryitems中的数据:

希望这会有所帮助。

【讨论】:

谢谢莱昂。我想通了,是我错过了 "Mapping" 部分。默认情况下,它是插入 ID,这不是您应该为自动递增主键执行的操作。 通过仅映射名称和纪元,sql db 按预期工作。

以上是关于将数据从 Azure Blob 存储复制到 Azure SQLDB 时,Azure 数据工厂错误地复制单元格值的主要内容,如果未能解决你的问题,请参考以下文章

需要通过oledb连接从azure存储blob容器中读取excel文件

使用 Nodejs 将文件从 Azure 存储 blob(容器)复制到 Azure 文件共享

使用 @azure/storage-blob 将 blob 从一个存储帐户复制到另一个

将文件从 SFTP 复制到 Blob 存储时并行执行 Azure 逻辑应用

将文件从远程桌面(RDP)复制到Azure blob存储中

将 blob 从私有 blob 容器复制到 Azure 中的公共 blob 容器