2016-11-30 68 views
2

我有一個U-SQL託管表,其中包含模式化的結構化數據。將數據從U-SQL託管表傳輸到Azure 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表,而不會丟失數據類型。

我使用的是湛藍的數據工廠,好像我不能

  1. 直接查詢在U-SQL管理表作爲數據工廠輸入數據集
  2. 做聯合查詢天青SQLDB

因此,我有一箇中間步驟,我從U-SQL託管表複製到Azure Blob,然後移動到Azure SQLDB表。這樣做,我正在丟失數據類型,並在插入之前再次進行類型轉換/轉換。

有沒有更好的方式將數據從U-SQL託管表傳輸到Azure SQL數據庫表而不會丟失數據類型?或者我錯過了什麼?

回答

3

此時你有下列選項:

  1. 導出在U-SQL表到ADLS或Blob存儲的中間格式(例如,CSV)。
  2. 使用ADF將文件移動到Azure SQL數據庫中。

我知道ADF團隊有一個工作項目可以爲您做到這一點。我會要求他們回覆此主題。

由於U-SQL中的容錯重試和擴展處理,直接從U-SQL腳本寫入表格會帶來很多挑戰。這使並行原子寫入交易存儲更加複雜(參見例如http://www.vldb.org/conf/1996/P460.PDF)。

2

現在有另一種選擇將數據從USQL託管表傳輸到Azure SQL數據庫表。

  • 寫出從USQL管理的表或從USQL腳本Azure的Blob存儲爲文本文件中的數據(.CSV,.TXT等)在
  • 然後利用公共預覽feature的Azure的SQL數據庫 - BULK INSERT - 把這個包到一個存儲過程
  • 添加存儲過程活動Azure的數據工廠安排

注:有一兩件事需要注意創建數據庫範圍CREDENTIAL時,請參考這個堆棧溢出question

相關問題