none
Como jogar os dados de um txt para tabelas de um banco de dados sql server? RRS feed

  • Pergunta

  • Bom dia amigos.

    Gostaria que dessem uma idéia de código para exportar dados de 7 arquivos txt, distintos para tabelas especificas de um banco de dados.

    1ª parte

    Preciso desenvolver um programa que lê os arquivos num determinado caminho (pasta), ler as linhas e jogar colunas específicas para determinadas tabelas.

    2ª parte outras

    Preciso já com os dados contidos nas tabelas, criar outros txt com os dados extraídos porém em determinadas linhas inserir alguns caracteres que não existiam originalmente no txt.

    terça-feira, 4 de junho de 2013 13:13

Respostas

  • olha, com o primeiro exemplo voce irá utilizar um método assim: 

    atualize essa parte do código do While, para essa:

                //Pega as informações do Arquivo, com a formatação de espaçamento.
                while (!vLeitor.EndOfStream)
                {
                    string registro = vLeitor.ReadLine();
                    i++;
                    Codigo[i] = registro.Substring(0, 10);
                    Produto[i] = registro.Substring(10, 20);
                    Marca[i] = registro.Substring(30, 20);
     
                    //Mostra os valores dos itens do Produtos.txt no DataGridView
                    DataGridView.Rows.Add(Codigo[i], Produto[i], Marca[i]);
    
                }
    
                //Fecha o Leitor de texto vLeitor
                vLeitor.Close();

    Com esses metodos .Substring, ele irá defenir o espaçamento de cada item escrito em seu text, nesse exemplo o meu arquivo txt iria ficar + / - assim:

    Codigo            Produto                 Marca

    ele iria dar esses espaços com a função substing(valor, valor) no caso dentro do (,) são os valores de distancia de uma coluna para a outra.

    ja os txt que estão separados por ;...

    este site poderá te explicar e ajudar melhor...

    http://www.macoratti.net/12/08/c_ftxt1.htm

    :D

    • Editado Jhoni Willian M terça-feira, 4 de junho de 2013 20:34
    • Marcado como Resposta Eduardo NTor terça-feira, 4 de junho de 2013 21:38
    terça-feira, 4 de junho de 2013 20:31

Todas as Respostas

  • Olá,

    Para sua primeira parte, você deverá utilizar um StreamReader para ler os arquivos de um diretório e armazenar no banco utilizando uma SqlConnection, com um SqlCommand.

    Para a segunda parte, você usa o SqlConnection para ler os dados e um StreamWriter para gravar novos arquivos.

    Alguns links abaixo para ajudar:

    http://www.dotnetperls.com/streamreader

    http://www.dotnetperls.com/sqlconnection

    http://www.dotnetperls.com/sqlcommand

    http://www.dotnetperls.com/streamwriter

    Att,


    Fabio Rosa.

    terça-feira, 4 de junho de 2013 16:53
  • Obrigado pela ajuda Fabio.

    Porém estou tendo dificuldade em juntar num mesmo código, as funções streamreader e sqlConnection.

    Teria algum exemplo pra ajudar?

    Grato.

    terça-feira, 4 de junho de 2013 19:35
  • olha faça isso, crie variaveis no caso seria as variaveis relacionadas as suas colunas, 

    vou demonstrar um exemplo com um Array, veja só:

    vou criar um array: 

            string[] Codigo = new string[50];
            string[] Produto = new string[50];
            string[] Marca = new string[50];


    criei 3 arrays, com a variavel: Codigo, Produto, Marca, as 3 com 50 de limites maximo.

    agora eu defino minha StreamReader igual a baixo!

    StreamReader vLeitor = new StreamReader(@"C:\Temp\Produtos.txt");


    no exemplo acima, estou pegando um Arquivo.txt que está no Disco C e na pasta Temp.

    agora para trazer as informações do texto no meu DataGrid, faça isso:

     while (!vLeitor.EndOfStream)
                {
                    string registro = vLeitor.ReadLine();
                    i++;
    
                    //Mostra os valores dos itens do Produtos.txt no DataGridView
                    DataGridView.Rows.Add(Codigo[i], Produto[i], Marca[i]);
    
                }

    desta forma, o que estiver no seu Arquivo .txt irá para o DataGrid.

    espero ter ajudado.



    terça-feira, 4 de junho de 2013 19:42
  • Olá grato pela ajuda Jhoni!

    Essa parte final do código, estou jogando os campos lidos no txt, para essas tabelas do banco?

    //Mostra os valores dos itens do Produtos.txt no DataGridView
                    DataGridView.Rows.Add(Codigo[i], Produto[i], marca[i]);

    No caso, meus txt's estão dividindo os campos por ";" como criar uma busca sabendo disso?

    Muito Obrigado!

    terça-feira, 4 de junho de 2013 20:08
  • nessa linha de código, ele esta jogando as informações para um DataGrid, e esse dataGrid pode ser o DataGrid do seu banco... 

    me manda um techo do seus txts para eu ver como esta.


    terça-feira, 4 de junho de 2013 20:11
  • Mais uma vez muito obrigado!

    Bem com relação ao txt, são dois tipos. Mas terei vários arquivos com delimitador em ";" e apenas um arquivo que preciso importar para o banco, é que não teria esse delimitador. Veja os dois exemplos e novamente muito obrigado!

    01000006140620003                    290                      15
    0200000614061045                     000000000600000000000000065
    01000006140720003                    284                      06
    0200000614071014                     000000000010000000000000102
    
    2;01;02;12;2.004;LUCY TEREZINHA DE SOUZA ;LUCY TEREZINHA;25.916.594/0001-06
    3;28;06;22;;SANTOS & FERREIRA DE BEM LTDA  ME;FERREIRA DE BEM;18.757.773/0001-82

    terça-feira, 4 de junho de 2013 20:25
  • olha, com o primeiro exemplo voce irá utilizar um método assim: 

    atualize essa parte do código do While, para essa:

                //Pega as informações do Arquivo, com a formatação de espaçamento.
                while (!vLeitor.EndOfStream)
                {
                    string registro = vLeitor.ReadLine();
                    i++;
                    Codigo[i] = registro.Substring(0, 10);
                    Produto[i] = registro.Substring(10, 20);
                    Marca[i] = registro.Substring(30, 20);
     
                    //Mostra os valores dos itens do Produtos.txt no DataGridView
                    DataGridView.Rows.Add(Codigo[i], Produto[i], Marca[i]);
    
                }
    
                //Fecha o Leitor de texto vLeitor
                vLeitor.Close();

    Com esses metodos .Substring, ele irá defenir o espaçamento de cada item escrito em seu text, nesse exemplo o meu arquivo txt iria ficar + / - assim:

    Codigo            Produto                 Marca

    ele iria dar esses espaços com a função substing(valor, valor) no caso dentro do (,) são os valores de distancia de uma coluna para a outra.

    ja os txt que estão separados por ;...

    este site poderá te explicar e ajudar melhor...

    http://www.macoratti.net/12/08/c_ftxt1.htm

    :D

    • Editado Jhoni Willian M terça-feira, 4 de junho de 2013 20:34
    • Marcado como Resposta Eduardo NTor terça-feira, 4 de junho de 2013 21:38
    terça-feira, 4 de junho de 2013 20:31
  • Jhoni você é o cara!

    Prometo que é a última pergunta e inclusive irei marcar sua resposta como solução ok?

    Bem no primeiro exemplo do txt: 

    01000006140620003                    290                      15
    0200000614061045                     000000000600000000000000065
    01000006140720003                    284                      06
    0200000614071014                     000000000010000000000000102

    As duas primeiras linhas são de um pedido, as duas ultimas são de outro pedido. Então não posso generalizar "todas as linhas" para os campos do DataGridView. Pois "01" é o cabeçalho do pedido que irá para partes específicas do DataGrid. E o "02" é o pedido em si que irá para outra parte do DataGrid. Entendeu?

    E mais uma vez muito grato!

    terça-feira, 4 de junho de 2013 21:09
  • então no caso, nessas 4 linhas, voce tem 2 pedidos? 01 no caso é o cabeçalho... então deixa eu ver..

    sera que não da para voce jogar esse cabeçalho direto no DataGrid e deixar só o pedido?

    por exemplo, no proprio DataGrid, voce adiciona as colunas referentes ao cabeçalho, no exemplo que eu dei no caso voce iria Add 3 colunas: Código, Produto e Marca ou seja, o cabeçalho seria no meu proprio Grid, e a segunda linha: 

    *0200000614061045 000000000600000000000000065*

    seria o pedido, no caso: o Código, Produto e a Marca...

    terça-feira, 4 de junho de 2013 21:26
  • Obrigado por responder.

    Bem a segunda linha não é uma informação "única" tenho vários campos ali que devem ser separados entendeu?

    terça-feira, 4 de junho de 2013 21:32
  • entendi, então você poderia usar a mesma função de espaçamento, veja os campos que precisam ser separados, e separe-os, e use o mesmo esquema do Substring para notificar o DataGrid que são campos separados um do outro, os espaçamentos você define manualmente, então precisa pensar um pouco em cada espaçamento e ir informando-os nas Substring... assim ficará mais fácil para você entender até mesmo no arquivo txt, qual campo irá pertencer a qual coluna... 

    acho que é isso, tenta ai já já estou indo estudar espero que tenha ajudado em algo :D

    terça-feira, 4 de junho de 2013 21:37
  • Muito obrigado mesmo cara!

    Sucesso pra você, valeu!

    terça-feira, 4 de junho de 2013 21:38