我正在尝试实现一个时间触发器功能,它连接到Azure DB并从表中获取内容。在此之后,我正在寻找使用BCP将此数据写入Azure Data湖文件的可能性。下面是我的函数和Json脚本
#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 :(得分:0)
(Azure Data Lake团队在这里)
从Azure功能写入Azure Data Lake Store(ADLS)是可能的 - 但不是您在上面的代码中执行此操作的方式。
您无法写入ADLS文件系统,就好像它是本地驱动器或文件共享一样。因此,在ADLS帐户中使用目标路径调用BCP将不起作用。
有几种选择。 Azure功能可以: