2017-06-19 5 views
1

J'essaie d'implémenter une fonction de déclenchement temporel, qui se connecte à Azure DB et récupère le contenu de la table. Après cela, je cherche les possibilités d'écrire ces données dans un fichier lac Azure Data en utilisant BCP. Ci-dessous ma fonction et JSON ScriptEst-il possible de lire les données à partir de la table de base de données Azure et de les écrire dans le fichier Azure Data Lake avec les fonctions 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 Exception lors de l'exécution fonction: Functions.OcDataTimerTriggerCSharp. mscorlib: Une exception a été émise par la cible d'une invocation. Système: Le système ne trouve pas le fichier spécifié.

+0

SQL DB Il est possible. Veuillez préciser le problème exact auquel vous faites face et ce que vous avez fait pour le résoudre jusqu'à présent. Sinon, la question est trop large. – Mikhail

Répondre

0

(équipe Azure de données Lac ici)

écriture Azure Lac Data Store (AVQ) à partir d'une fonction Azure est possible - mais pas de la façon dont vous vous faites dans le code ci-dessus.

Vous ne pouvez pas écrire sur le système de fichiers ADLS comme s'il s'agissait d'un lecteur local ou de partage de fichiers. Ainsi, appeler BCP avec un chemin de destination dans un compte ADLS ne fonctionnera pas.

Il existe plusieurs options pour vous. Une fonction Azure pourrait:

  • exécuter un pipeline ADF
  • Démarrer un emploi U-SQL pour lire à partir du SQL Azure et écrire à ADLS.
  • manuellement lecture de la ligne par -row et écrire les lignes dans ADLS