none
Inserir conteudo de txt em uma tabela. RRS feed

  • Pergunta

  • Pessoal, bom dia....

    Estou com um projeto onde eu receberei arquivos de EDI numa pasta, e preciso inserir o conteudo desses arquivos numa tabela.

    Caso o arquivo não chegue, ou demore pra ser inserido no banco, ele deve mandar um alerta pra um e-mail x.

    É complicado pois eu peguei o projeto agora e nao tenho muitas informações. Terei uma reuniao agora a tarde para pegar mais detalhes.

    Valeu mesmo pela ajuda, galera!


    Leopoldo A. Nascimento (Ajude o máximo que puder, que assim será feito por você.) - Foi útil esta resposta? Então marque. ;)

    quinta-feira, 1 de março de 2012 13:06

Respostas

  • Olá Leopoldo,

    Claro, vamos lá:

    linha 1: Verifico se a tabela temporária, que será usada para armazenados os dados da seu arquivo txt, já existe no banco de dados tempdb. (pois se trata de uma tabela temporária)

    linha 2: Caso exista, ela será dropada.

    linha 3: Crio uma tabela temporária.

    linha 4: Nesta tabela temporária adiciono um campo do tipo varchar(500), ele será responsável por receber os dados do seu arquivo texto.  

    linha 6: Faço a inserção dos dados contidos no seu txt através do comando bulk insert. Optei por fazer esta operação com este comando pois, com ele você possui várias opções adicionais, como por exempo: indicador de quebra de linha, indicador de fim do arquivo etc.

    para maiores informações do bulk insert veja o seguinte: http://msdn.microsoft.com/en-us/library/ms188365.aspx 

    linha 8: finalizo dando um select na tabela temporária. Você também poderá guardar os dados em uma tabela física.

    Espero que tenha ficado claro.

    Abraços.

    Se útil, Classifique.


    Dhiego Piroto - MCP | MCTS SQL Server 2008 Developer | Email: dhiegopiroto@gmail.com

    quinta-feira, 1 de março de 2012 17:17

Todas as Respostas

  • Olá Leopoldo,

    Que tal usarmos o Bulk Insert? Segue um exemplo.

    IF EXISTS (SELECT NAME FROM TEMPDB.SYS.TABLES WHERE NAME LIKE '#TEMP_IMPORTACAO%')
    	DROP TABLE #TEMP_IMPORTACAO
    
    CREATE TABLE #TEMP_IMPORTACAO(
    	TEXTO VARCHAR(500) NOT NULL
    )
    
    
    BULK INSERT  #TEMP_IMPORTACAO 
       FROM 'C:\SEU_TXT.txt'
    
    SELECT * FROM #TEMP_IMPORTACAO

    Se útil, Classifique.


    Dhiego Piroto - MCP | MCTS SQL Server 2008 Developer | Email: dhiegopiroto@gmail.com


    • Editado DhiegoPiroto quinta-feira, 1 de março de 2012 15:46
    • Sugerido como Resposta DhiegoPiroto quinta-feira, 1 de março de 2012 15:46
    quinta-feira, 1 de março de 2012 15:45
  • E ai Dhiego, tudo bem?

    Cara, eu não sei muito desses fluxos pra inserir dados em BD.

    Seria possivel voce me explicar por cima o código que voce passou, por favor?

    Mto obrigado pela ajuda.

    Abraços


    Leopoldo A. Nascimento (Ajude o máximo que puder, que assim será feito por você.) - Foi útil esta resposta? Então marque. ;)

    quinta-feira, 1 de março de 2012 16:51
  • Olá Leopoldo,

    Claro, vamos lá:

    linha 1: Verifico se a tabela temporária, que será usada para armazenados os dados da seu arquivo txt, já existe no banco de dados tempdb. (pois se trata de uma tabela temporária)

    linha 2: Caso exista, ela será dropada.

    linha 3: Crio uma tabela temporária.

    linha 4: Nesta tabela temporária adiciono um campo do tipo varchar(500), ele será responsável por receber os dados do seu arquivo texto.  

    linha 6: Faço a inserção dos dados contidos no seu txt através do comando bulk insert. Optei por fazer esta operação com este comando pois, com ele você possui várias opções adicionais, como por exempo: indicador de quebra de linha, indicador de fim do arquivo etc.

    para maiores informações do bulk insert veja o seguinte: http://msdn.microsoft.com/en-us/library/ms188365.aspx 

    linha 8: finalizo dando um select na tabela temporária. Você também poderá guardar os dados em uma tabela física.

    Espero que tenha ficado claro.

    Abraços.

    Se útil, Classifique.


    Dhiego Piroto - MCP | MCTS SQL Server 2008 Developer | Email: dhiegopiroto@gmail.com

    quinta-feira, 1 de março de 2012 17:17
  • Beleza Dhiego,

    Vou tentar desse jeito então, qualquer coisa eu volto aqui mas desde já muito obrigado.

    Abraços


    Leopoldo A. Nascimento (Ajude o máximo que puder, que assim será feito por você.) - Foi útil esta resposta? Então marque. ;)

    quinta-feira, 1 de março de 2012 17:29