Advertisement
paulogp

SSIS: Download de ficheiro CSV da Web para importação

Jul 13th, 2011
331
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.55 KB | None | 0 0
  1. /* A seguinte acção (DTS), faz download de um ficheiro CSV e importa-o para uma BD.
  2.  
  3. 1. No Microsoft Visual Studio 2008, criar um novo SSIS
  4. 2. Na Connections Manager criar uma ligação New Connection
  5. 3. Seleccionar HTTP - Connection manager for HTTP connections e criar uma nova ligação (nome standard HTTP Connection Manager)
  6. 4. Colocar o endereço do ficheiro (exemplo: "http://www.hello_world.com/ficheiro.csv") na nova ligação
  7. 5. Colocar um objecto Script Task no Control Flow e colocar o código C# (abaixo indicado [necessário login para visualizar o código]) no script
  8. 6. Fazer download do ficheiro e colocar na pasta que vai servir de repositório
  9. 7. Na Connections Manager criar uma ligação New Flat File Connection
  10. 8. No Flat File Connection Manager Editor, colocar na Connection manager name: the_downloaded_file e localizar o ficheiro (ponto 6) usando o botão Browse.
  11. Ter atenção ao tamanho das colunas atribuido automaticamente pelo sistema.
  12. 9. Colocar um objecto Data Flow no Control Flow
  13. 10. Dentro do objecto Data Flow colocar um objecto Flat File Source e ligar Flat file connection manager: the_downloaded_file
  14. 11. Colocar uma ligação a uma BD e ligar o objecto Flat File Source a esta. */
  15.  
  16.  
  17. using System;
  18. using System.Data;
  19. using Microsoft.SqlServer.Dts.Runtime;
  20. using System.Windows.Forms;
  21.  
  22. namespace ST_6799d08685cb4ad78633d035fab12178.csproj
  23. {
  24.     [System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]
  25.     public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
  26.     {
  27.  
  28.         #region VSTA generated code
  29.         enum ScriptResults
  30.         {
  31.             Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
  32.             Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
  33.         };
  34.         #endregion
  35.  
  36.         public void Main()
  37.         {
  38.             try
  39.             {
  40.                 // Logging start of download
  41.                 bool fireAgain = true;
  42.  
  43.                 // http://colinkirkby.blogspot.com/2007/01/ssis-logging-within-script-tasks.html
  44.                 Dts.Events.FireInformation(0, "Download File", "Start downloading " + Dts.Connections["HTTP Connection Manager"].ConnectionString, string.Empty, 0, ref fireAgain);
  45.  
  46.                 // Get your newly added HTTP Connection Manager
  47.                 Object mySSISConnection = Dts.Connections["HTTP Connection Manager"].AcquireConnection(null);
  48.  
  49.                 // Create a new connection
  50.                 HttpClientConnection myConnection = new HttpClientConnection(mySSISConnection);
  51.  
  52.                 // Download file and use the Flat File Connectionstring (D:\SourceFiles\Products.csv)
  53.                 // to save the file (and replace the existing file)
  54.                 myConnection.DownloadFile(Dts.Connections["the_downloaded_file"].ConnectionString, true);
  55.  
  56.                 // Logging end of download
  57.                 Dts.Events.FireInformation(0, "Download File", "Finished downloading " + Dts.Connections["the_downloaded_file"].ConnectionString, string.Empty, 0, ref fireAgain);
  58.  
  59.                 // Quit Script Task succesful
  60.                 Dts.TaskResult = (int)ScriptResults.Success;
  61.             }
  62.             catch (Exception ex)
  63.             {
  64.                 // Logging why download failed
  65.                 Dts.Events.FireError(0, "Download File", "Download failed: " + ex.Message, string.Empty, 0);
  66.  
  67.                 // Quit Script Task unsuccesful
  68.                 Dts.TaskResult = (int)ScriptResults.Failure;
  69.             }
  70.         }
  71.     }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement