Existe uma maneira de executar o sqlcmd para obter a saída da consulta sem mostrar o número de linhas afetadas?

6

Estou executando uma consulta simples no SQL Server 2005 e quero que ela exporte para um arquivo via sqlcmd. Eu estava esperando para obter os resultados em um formato csv sem os cabeçalhos e os metadados da consulta (quantas linhas são afetadas). para os cabeçalhos você pode especificar -h -1, mas como você pode se livrar do texto final?

Agora eu tenho

sqlcmd -S klingon -d stardb -i C:\testscript.sql -o C:\testresults.csv -h -1 -s ","

com o script sendo algo simples ao som de

select x, y, z from agent

Infelizmente, os resultados são assim:

         24 aingles1         creablegs            
         25 tbails12         bull2dog12           
         26 jtaylor3         Leandon62606         
         27 forrestw1        nuke19211            

(4 rows affected)

Não consigo encontrar nada no arquivo de ajuda que me diga como remover a última parte que me diz quantas linhas foram afetadas.

Idéias, alguém?

    
por rumz 09.08.2010 / 22:27

3 respostas

8

Acho que você pode querer a opção "SET NOCOUNT ON". Seu script SQL será parecido com:

 set nocount on  
 select x, y, z from agent  
 set nocount off  

E o conjunto de resultados será:

 24 aingles1         creablegs            
 25 tbails12         bull2dog12           
 26 jtaylor3         Leandon62606         
 27 forrestw1        nuke19211    

Menos a contagem da linha de linhas no final.

    
por 10.08.2010 / 09:28
2
sqlcmd -S svr -d db ... | findstr /v "rows affected"

findstr está embutido no sistema operacional e é semelhante ao grep. Veja findstr /? para mais opções.

Para remover uma coluna, use cut.exe tool . Então você pode correr:

sqlcmd -S svr -d db ... | cut -c10-

Isso só produziria do caractere 10 em diante, removendo assim os números de linha. Ajuste o número 10 de acordo. Você também pode tentar campos:

sqlcmd -S svr -d db ... | cut -f2-

Isso só produziria os campos 2 e seguintes (à direita).

    
por 09.08.2010 / 23:01
0

Eu adiciono o seguinte bloco de código ao início da própria consulta para remover todas as mensagens ao usar o sqlcmd.exe para exportar os resultados para CSV.

-- Suppress warnings and messages like (2 rows effected)
SET ANSI_WARNINGS OFF;
SET NOCOUNT ON;
-- SQLCMD.exe batch command
:setvar SQLCMDERRORLEVEL 1
-- To Reenable
--:setvar SQLCMDERRORLEVEL 0
/**********************************************************************************
**  DISABLING WARNINGS AND MESSAGES
**  Disable "Changed database context to 'DatabaseName'." message in the CSV file when using 
**  SQLCMD.exe. You'll get a syntax error when executing this query in Management 
**  Studio if SQLCMD Mode is not enabled [Query] --> [SQLCMD Mode].
**  :setvar SQLCMDERRORLEVEL 1 is used to disable messages like (152 Rows affected).
**********************************************************************************/
    
por 01.02.2016 / 21:55