none
Concatenar variavel no BCP RRS feed

  • Pergunta

  • Caros colaboradores.

    como fazer para concatenar uma variavel no BCP? Estou gravando o nome do arquivo em uma variavel e quero colocar essa variavel dentro do proc BCP

    esta dessa forma:

     declare @caminho varchar(1000)
     set @caminho = 'c:\Arq_104.txt'
     declare @exec varchar(1000)
     select @exec = ' exec master.dbo.xp_cmdshell "bcp select * from ##todoconteudo queryout '+@caminho+' -c -T"'
     EXEC(@exec)

    Já mandei imprimir na Tela,  e esta tudo certo, ao meu ver.

    exec master.dbo.xp_cmdshell "bcp select * from ##todoconteudo queryout c:\Arq_104.txt -c -T"

    Quando eu mando executar, esta dando erro!!

    E erro é este


    Copy direction must be either 'in', 'out' or 'format'.
    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]
    NULL
    sexta-feira, 13 de junho de 2008 13:39

Todas as Respostas

  • Olá Alexandre,

     

    É um erro de sintaxe. Veja a correção abaixo:

    Code Snippet

    declare @caminho varchar(1000)

    set @caminho = 'c:\Arq_104.txt'

    declare @exec varchar(1000)

    select @exec = ' exec master.dbo.xp_cmdshell '' bcp "select * from ##todoconteudo" queryout '+@caminho+' -c -T '''

    EXEC(@exec)

     


    Resultado:

    Code Snippet

    exec master.dbo.xp_cmdshell ' bcp "select * from ##todoconteudo" queryout c:\Arq_104.txt -c -T '

     

     


    Qualquer problema, avise!

     

    Um abraço,

    Raul Santos

    sexta-feira, 13 de junho de 2008 16:29
  • -- create table ##todoconteudo (campo int)
    -- insert into ##todoconteudo (campo) Values (1)

    declare @caminho varchar(1000)
     set @caminho = 'D:\Arq_104.txt'
     declare @exec varchar(1000)
     select @exec = ' exec master.dbo.xp_cmdshell ''bcp "select * from ##todoconteudo" queryout "'+@caminho+'" -c -t; -T'''
     
     EXEC(@exec)

     

    sexta-feira, 13 de junho de 2008 16:39
  • Muito obrigado pessoal.

    Era erro na sintaxe mesmo. estava na minha cara e eu nao vi. foi soh eu dormir uma boa noite de sono e com a ajuda de vcs, resolvi parte do meu problema.

    Muito obrigadooooo
    segunda-feira, 16 de junho de 2008 13:22