Usuário com melhor resposta
Carregamento de arquivo TXT

Pergunta
-
Boa tarde pessoal!
Tenho uma rotina de carregamento de arquivos TXT, via Procedure + BulkInsert que estou migrando para SSIS.
Esses arquivos são carregados em Bancos de Dados diferentes, mas que possuem a mesma estrutura, o que diferencia a base para ser carregada é o nome do arquivo, que contem o nome do Banco de Dados.
O que estou querendo fazer é a partir do nome do arquivo definir o Banco de Dados que o SSIS vai se conectar para fazer o carregamento, mas não estou conseguindo configurar as opção do OLE DB Destination e do OLE DB Connection, para que ele faça isso.
Alguem poderia me dar uma força!
Obrigado
Respostas
-
Pedro,
Estamos lidando com 2 problemas:
1 - Capturar o nome do banco a partir do nome do arquivo: Pessoalmente aqui, o que eu faria, um simples SQL Script task, com algumas funções do SQL Server mesmo, para ir limpando o nome do arquivo e chegar ao nome do banco, fiz algo parecido hoje, porem era com o nome de uma tabela, utilizei um REPLACE + RIGHT e obtive o nome correto, e limpo da tabela
2 - Conexão remota com o banco de dados, aqui, voce deve alterar o expression da sua conexão, ou seja:
2.1 - Crie uma conexão com um banco existente e que esteja funcionando
2.2 - Veja este meu post sobre conexão dinamica no SSIS (Estou para fazer um video, mas o tempo anda corrido, qualquer duvida, pode perguntar).
http://fabrizziocaputo.wordpress.com/2011/10/10/conexao-dinamica-no-ssis/
Fabrizzio A. Caputo
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com- Marcado como Resposta Pedro Vitor de Oliveira Gonçalves sexta-feira, 18 de novembro de 2011 13:08
Todas as Respostas
-
Olá Pedro, boa tarde,
Primeiramente gostaria de esclarecer uma dúvida: O processo vai ser automático? Se sim que irá fornecer o nome dos banco para SSIS? Será um aplicativo ou manualmente?
Para resolver esta necessidade eu utilizo variável global. Se quiser, dá uma olhada nos helps sobre variável global em SSIS.
Fico no aguardo da resposta para detalhar melhor.
Abs.
-
Edu!
Esse processo será automático, vou agendar um JOB para rodar de tempos em tempos. Tenho um diretório no Servidor onde esses arquivos são armazenados, e onde aponto o SSIS para buscar os arquivos.
Eu uso variáveis globais para capturar o nome do arquivo, e armazeno o nome do Banco de Dados em outra variavel global utilizando um substring na variável com o nome do arquivo.
O que não estou conseguindo fazer é configurar as Expressions do OLE DB Connection para usar o Banco de Dados referente ao arquivo.
Espero ter esclarecido as dúvidas!
Abraços!
-
-
Edu!
Não são apenas 2 Bancos de Dados e sim 8!
Pensei nessa possibilidade mas ficaria muito grande o pacote do SSIS e mais difícil de fazer a manutenção.
E os nomes não são dinâmicos, mas os dados dos arquivos são diferentes assim como o nome, que especifica a qual Banco de Dados ele pertence!
Se eu conseguir fazer dessa forma posso criar apenas um DataFlow que serve para todos os Bancos de Dados.
-
Pedro,
Estamos lidando com 2 problemas:
1 - Capturar o nome do banco a partir do nome do arquivo: Pessoalmente aqui, o que eu faria, um simples SQL Script task, com algumas funções do SQL Server mesmo, para ir limpando o nome do arquivo e chegar ao nome do banco, fiz algo parecido hoje, porem era com o nome de uma tabela, utilizei um REPLACE + RIGHT e obtive o nome correto, e limpo da tabela
2 - Conexão remota com o banco de dados, aqui, voce deve alterar o expression da sua conexão, ou seja:
2.1 - Crie uma conexão com um banco existente e que esteja funcionando
2.2 - Veja este meu post sobre conexão dinamica no SSIS (Estou para fazer um video, mas o tempo anda corrido, qualquer duvida, pode perguntar).
http://fabrizziocaputo.wordpress.com/2011/10/10/conexao-dinamica-no-ssis/
Fabrizzio A. Caputo
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com- Marcado como Resposta Pedro Vitor de Oliveira Gonçalves sexta-feira, 18 de novembro de 2011 13:08
-
Fabrizzio, bom dia!
Eu já estava conseguindo gravar o nome do Banco de Dados em uma variável, para isso usei um script task em VB e usei o substring.
Olhei o seu artigo e consegui configurar a conexão dinâmica!
Configurei as expressions do Innitial catalog e Server Name e funcionou perfeitamente.
Muito Obrigado pela ajuda
Abraços