2017-06-19 45 views
1

我想實現一個時間觸發器函數,它連接到Azure DB並從表中獲取內容。在此之後,我正在尋找使用BCP將此數據寫入Azure數據湖文件的可能性。下面是我的功能和JSON腳本是否可以從Azure數據庫表讀取數據並將其寫入Azure Data Lake文件並使用Azure功能?

#r "System.Configuration" 
#r "System.Data" 
#r "System.IO" 
using System.Configuration; 
using System.Data.SqlClient; 
using System.Threading.Tasks; 
using System; 
using System.IO; 
using System.Net; 
public static void Run(TimerInfo myTimer, TraceWriter log) 
{ 
    var str = ConfigurationManager.ConnectionStrings["sqldb_connection"].ConnectionString; 
    log.Info($"C# Timer trigger function executed at: {DateTime.Now}"); 
    using (SqlConnection conn = new SqlConnection(str)) 
    { 
    conn.Open(); 
    System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
    proc.StartInfo.FileName = "bcp"; 
    proc.StartInfo.Arguments = "\"select * from Person \""+ "queryout 'DatalakeFilepath' -S test-server.database.windows.net -U username -P password -d database -N"; 
    proc.Start(); 
    } 
} 


//Json: 
{ 
    "bindings": [ 
    { 
     "name": "myTimer", 
     "type": "timerTrigger", 
     "direction": "in", 
     "schedule": "0 */5 * * * *" 
    } 
    ], 
    "disabled": false 
} 

2017-06-19T11:29:31.957異常而執行功能:Functions.OcDataTimerTriggerCSharp。 mscorlib:異常已被調用的目標拋出。系統:系統找不到指定的文件。

+0

這是可能的。請詳細說明您面臨的具體問題以及您迄今爲止所做的解決方案。否則,這個問題太廣泛了。 – Mikhail

回答

0

(這裏Azure的數據湖隊)

從Azure的功能寫入Azure的數據存儲湖(ADLS)是可能的 - 但不是在你,你正在做它在上面的代碼的方式。

不能寫入ADLS文件系統,就好像它是本地驅動器或文件共享。因此,在ADLS帳戶中使用目標路徑呼叫BCP將不起作用。

有幾種選擇給你。湛藍的函數可以:

  • 運行的ADF管道
  • 開始爲U-SQL作業從SQL Azure的讀取和寫入ADLS。
  • 手動從SQL DB行由行×讀取和行寫入ADLS
相關問題