none
Como exportar dados do SQL Server 2008 para arquivo txt usando BCP RRS feed

  • Pergunta

  • Boa tarde.

    Existe uma forma de extrair os dados de uma tabela através do BCP, (SQL server) para um arquivo txt. E os dados no txt estarem delimitados por ";" ?

    Grato pela ajuda.

    sexta-feira, 16 de agosto de 2013 17:47

Respostas

  • Segue o exemplo conforme solicitaste:

    bcp  "select [DocId],[Titulo] from [DocumentoDB].[dbo].[tbDocumentos]" queryout c:\arq.txt -Slocalhost\tsql2012 -t";" -T -c

    retorno do arquivo:

    1;Criar banco de dados SQL Server
    2;Criar fun‡äes SQL Server
    3;Criar views SQL Server

    Espero ter ajudado.

    Roberto Galvão
    MCITP - Administration SQL Server 2008
    MCITP - Developer SQL Server 2008
    MCSA - SQL Server 2012


    Roberto Galvão | MCTS | MCITP | Microsoft Partner |

    • Sugerido como Resposta Roberto Galvão sexta-feira, 16 de agosto de 2013 18:33
    • Marcado como Resposta Eduardo NTor terça-feira, 20 de agosto de 2013 00:08
    sexta-feira, 16 de agosto de 2013 18:33

Todas as Respostas

  • Olá,

    Você pode ver os paramentros do comando:

    C:\bcp -?
    usage: bcp {dbtable | query} {in | out | queryout | format} datafile
      [-m maxerrors]            [-f formatfile]          [-e errfile]
      [-F firstrow]             [-L lastrow]             [-b batchsize]
      [-n native type]          [-c character type]      [-w wide character type]
      [-N keep non-text native] [-V file format version] [-q quoted identifier]
      [-C code page specifier]  [-t field terminator]    [-r row terminator]
      [-i inputfile]            [-o outfile]             [-a packetsize]
      [-S server name]          [-U username]            [-P password]
      [-T trusted connection]   [-v version]             [-R regional enable]
      [-k keep null values]     [-E keep identity values]
      [-h "load hints"]         [-x generate xml format file]

    o parametro para delimitador é  [-t field terminator] 

    e delimitador de linha: [-r row terminator]

    espero ter ajudado.

    Roberto Galvão
    MCITP - Administration SQL Server 2008
    MCITP - Developer SQL Server 2008
    MCSA - SQL Server 2012


    Roberto Galvão | MCTS | MCITP | Microsoft Partner |


    sexta-feira, 16 de agosto de 2013 17:51
  • Complemente...

    mais detalhes no link: http://technet.microsoft.com/en-us/library/ms191485.aspx

    Roberto Galvão
    MCITP - Administration SQL Server 2008
    MCITP - Developer SQL Server 2008
    MCSA - SQL Server 2012


    Roberto Galvão | MCTS | MCITP | Microsoft Partner |

    • Sugerido como Resposta Roberto Galvão sexta-feira, 16 de agosto de 2013 17:55
    sexta-feira, 16 de agosto de 2013 17:55
  • Obrigado pela ajuda Roberto!

    Mas se alguém pudesse apresentar um exemplo de código iria ajudar bastante.

    Estava montando uma aplicação em C# pra fazer isso e descobri o BCP!

    Preciso que após a extração pelo BCP ele fique como o exemplo abaixo: Os campos onde o ";" não tem informações seria colunas vazias. Preciso que seja exportado do banco conforme abaixo exemplo:

    43;BOLETO;;;;;22 - FORA;25714;195X;;NELSON ALMEIDA FERREIRA

    sexta-feira, 16 de agosto de 2013 18:10
  • Segue o exemplo conforme solicitaste:

    bcp  "select [DocId],[Titulo] from [DocumentoDB].[dbo].[tbDocumentos]" queryout c:\arq.txt -Slocalhost\tsql2012 -t";" -T -c

    retorno do arquivo:

    1;Criar banco de dados SQL Server
    2;Criar fun‡äes SQL Server
    3;Criar views SQL Server

    Espero ter ajudado.

    Roberto Galvão
    MCITP - Administration SQL Server 2008
    MCITP - Developer SQL Server 2008
    MCSA - SQL Server 2012


    Roberto Galvão | MCTS | MCITP | Microsoft Partner |

    • Sugerido como Resposta Roberto Galvão sexta-feira, 16 de agosto de 2013 18:33
    • Marcado como Resposta Eduardo NTor terça-feira, 20 de agosto de 2013 00:08
    sexta-feira, 16 de agosto de 2013 18:33
  • Obrigado novamente Roberto!

    Com o comando:

     bcp  "select [DocId],[Titulo] from [DocumentoDB].[dbo].[tbDocumentos]" queryout c:\arq.txt -Slocalhost\tsql2012 -t";" -T -c

    Conseguirei extrair os dados de uma tabela para um arquivo txt (c:\exemplo.txt) assim 43;BOLETO;;;;;22 - FORA;25714;195X;;NELSON ALMEIDA FERREIRA

    Ok valeu mesmo. Porém posso transformar esse comando em uma bat?

    Fiquei com duvidas onde informo o nome do banco e da tabela nesse comando.

    • Sugerido como Resposta Roberto Galvão sexta-feira, 16 de agosto de 2013 19:07
    • Não Sugerido como Resposta Roberto Galvão sexta-feira, 16 de agosto de 2013 19:07
    sexta-feira, 16 de agosto de 2013 19:00
  • olá,

    Você pode fazer um bat ou usar a procedure do sql xp_cmdshell. Esta procedure executa comandos dos.

    ex: exec xp_cmdshell 'dir c:\'

    Quanto ao nome do banco está na query:

    from [DocumentoDB].[dbo].[tbDocumentos]

    from [<database>].[<owner>].[<table>]

    espero ter ajudado.

    Roberto Galvão
    MCITP - Administration SQL Server 2008
    MCITP - Developer SQL Server 2008
    MCSA - SQL Server 2012

     


    Roberto Galvão | MCTS | MCITP | Microsoft Partner |


    sexta-feira, 16 de agosto de 2013 19:07