SSIS – Importando um arquivo via Script Task

Fala Galera,

Este será o primeiro artigo de uma série que irei fazer sobre dicas do SSIS.

Pretendo toda quarta feita disponibilizar um ou dois pequenos artigos.

Bem, hoje irei mostrar como importar um arquivo para uma tabela usando arquivos de configuração.

Primeiramente iremos criar a estrutura de tabelas que irá armazenar os dados do arquivo importado.


Create database ImportaArquivos

go

use ImportaArquivos

go

Create Table ImportaArquivoDinamico(

nm_id int identity(1,1) primary key,

ch_Nome varchar(100),

ch_sobreNome varchar(100),

dt_DataImportacao datetime default(getdate())

)

Abriremos o SSIS, iremos em New > NewProjetc > Integration Services Project  para criar um novo projeto:

1

Criaremos uma variável que irá contem o caminho do arquivo a ser importado:

2

Adicione uma Script task (aba control flow)

3

De um dois cliques na task e escolha como linguagem o C# 2008 e selecione a variável que criamos como no campo “readOnlyVariables”. Após isso de um clique em “Edit Script” para que possamos adicionar o código.

4

Iremos inserir o seguinte código (comentado)


using System;

using System.Data;

using Microsoft.SqlServer.Dts.Runtime;

using System.Windows.Forms;

 

/*NameSpace que permite fazer a conex�o com a base SQL*/

using System.Data.SqlClient;

 

/*NameSpace que permite fazer importações*/

using System.IO;

 

namespace ST_65067a882bb04492b6e7ae064b642b3d.csproj

{

[System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]

public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase

{

 

#region VSTA generated code

enum ScriptResults

{

Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,

Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure

};

#endregion

 

public void Main()

{

/*Armazena o caminho do arquivo a ser importado em uma vari�vel*/

String Arquivo = Dts.Variables["CaminhoArquivo"].Value.ToString();

 

/*String de Conex�o ao DB*/

String SERVIDOR      = ".,1432";

String BANCO_INICIAL = "ImportaArquivos";

String USUARIO       = "usuario";

String SENHA         = "123";

 

String connectionString = "Initial Catalog=" + BANCO_INICIAL + ";Data Source=" + SERVIDOR + ";Integrated Security=False;User ID=" + USUARIO + ";Password=" + SENHA + ";";

 

try

{

/*Estabelece conexão com o servidor*/

SqlConnection cnn = new SqlConnection();

cnn.ConnectionString = connectionString;

cnn.Open();

/*Percorre cada linha do arquivo*/

foreach (String linha in File.ReadAllLines(Arquivo))

{

 

/*Informa com que caracter é realizada a separação de colunas no arquivo*/

String[] inserir = linha.Split('|');

 

/*Sobe o arquivo para memória antes de inserir*/

String comando = " insert into ImportaArquivoDinamico (ch_nome,ch_sobrenome) values ";

comando = comando + "('" + inserir[0].ToString() + "' , '" + inserir[1].ToString() +"')";

 

/*Executa insert do comando*/

SqlCommand sqlCMD = new SqlCommand(comando, cnn);

sqlCMD.ExecuteNonQuery();

}

/*Fecha conexão*/

cnn.Close();

 

/*Finaliza a DTS com sucesso.*/

Dts.TaskResult = (int)ScriptResults.Success;

}

catch(Exception e)

{

/*Finaliza a DTS com falha.*/

Dts.TaskResult = (int)ScriptResults.Failure;

}

}

}

}

 

Muito bom! Agora já temos o código de importação pronto iremos configurar o SSIS para receber o nome do arquivo através de um txt.

Clique com o botão direto do mouse em qualquer área  do projeto e vá em propriedades.

Feito isso, localiza o menu abaixou e clique nas reticências.
5

Clique no check Box “Enable package configurations” e depois clique em ADD. Uma nova tela irá se abrir e você poderá escolher qual o tipo de arquivo de configuração você deseja, no nosso caso será um arquivo XML e depois explicite o diretório e nome do arquivo.

Clique em Next.

6

Depois disso uma nova tela irá se abrir e todas as variáveis serão exibidas. Você deverá selecionar a variável que criamos para o nome do arquivo e selecionar a opção “value” e depois clicar em “Finish” e no final “Close”.

7

Agora vá até o diretório em que você mapeou o arquivo de configuração e veja se ele já está na pasta. Se você fez tudo corretamente um arquivo similar a este deverá aparecer:
8

Agora para que possamos testar, você irá alterar a conteúdo da tag  <configuredValue> para um outro arquivo (que obedeça a mesma estrutura).

Após alterar o XML com o arquivo que você deseja, altere a propriedade “value” que está na variável no SSIS para 0 (zero) e execute o programa.

Por hoje é isso galera.

Abraços

Dhiego Piroto

BLOG DO ZOUZA

"Lifelong Learner" - Compartilhando e Adquirindo Conhecimentos!

Blog - Thiago Carlos de Alencar

Aprendendo SQL Server !

SQL Authority with Pinal Dave

SQL Server Performance Tuning Expert

Vitor Fava

Let s Learn, Practice and Share some knowledge

Diego Nogare

DBCC DumpMemory 'TECH','ALL'

Gustavo Maia Aguiar

Artigos, dicas e algumas reflexões sobre o SQL Server

Kimberly L. Tripp

DBCC DumpMemory 'TECH','ALL'

Thiago Zavaschi R2

www.zavaschi.com

Blog do Luti

DBCC DumpMemory 'TECH','ALL'

Luan.Moreno a.k.a [SQL.Soul]

Lead Database Consultant at Pythian

Blog do Leka

let's make things better