簡體   English   中英

Azure 數據工廠架構映射不適用於 SQL 接收器

[英]Azure Data Factory schema mapping not working with SQL sink

我有一個簡單的管道,可將數據從 csv 文件加載到 Azure SQL 數據庫。

我添加了一個數據流,確保所有模式都與 SQL 表匹配。 我有一個特定字段,其中包含帶前導零的數字。 source - projection 中的數據類型設置為字符串。 該字段映射到顯示為字符串數據類型的 SQL 接收器。 SQL 中的字段具有 nvarchar(50) 數據類型。

管道運行后,所有前導零都將丟失,並且該字段似乎被視為十進制:

Original data: 0012345
Inserted data: 12345.0

數據預覽中顯示的 CSV 數據顯示正確,但由於某種原因,它在插入過程中丟失了格式。

有什么想法可以讓它正確插入嗎?

我在我的實驗室中進行了復制,並且能夠按預期加載。 請參閱下面的復制詳細信息。

源文件(CSV 文件):

在此處輸入圖像描述

匯表(SQL表):

在此處輸入圖像描述

自動進紙器:

  1. data flow連接到 CSV 源文件。 由於我的文件是文本格式,投影中的所有源列都是一個字符串。

在此處輸入圖像描述

源數據預覽:

在此處輸入圖像描述

  1. 連接sinkAzure SQL database ,加載數據到目的表。

在此處輸入圖像描述

  1. Azure SQL 數據庫表中的數據。

在此處輸入圖像描述

注意:您可以在 sink 之前添加派生列以將值轉換為字符串,因為 sink 數據類型是字符串。

非常感謝您的回復。

根據您的帖子,DF 數據流似乎工作正常。 我終於發現了轉換的問題 - 我有一個 Azure 批處理服務,它運行一個 python 腳本,它進行基本轉換並將 output 保存到一個 csv 文件。

有趣的是,當我預覽數據流中的數據時,它看起來和預期的一樣。 但是,存儲在 SQL 中的值不是。

為了其他人有類似問題,我現有的 python 腳本用於將“float”數據類型列轉換為字符串類型。 轉換后,它過去常常保留 1 個十進制數,但由於我所有的數字都是整數,所以它們以 .0 結尾。

解決方案是將值轉換為 integer,然后再轉換為字符串:

df['col_name'] = df['col_name'].astype('Int64').astype('str')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM