将数据从 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 从一个存储帐户复制到另一个