Salvar resultados como CSV * com * cabeçalhos no SSMS

13

Com o SQL Server 2008 R2, quando eu salvo os resultados como CSV, não há cabeçalhos. Eu posso contornar isso copiando e colando com o "Copiar com cabeçalhos", ou simplesmente pegue os cabeçalhos e cole-os no CSV etc., mas existe uma maneira melhor de fazer isso?

Kyle Brandt
fonte
Na verdade, um sp que faz isso pode ser o ideal.
Kry Brandt
Copie com cabeçalhos e cole no Excel!

Respostas:

22

No SSMS, você precisa alterar algumas opções:

Ferramentas - Opções - Resultados da consulta - servidor sql - resultados na grade (ou texto) -> Incluir cabeçalhos de coluna ao copiar ou salvar os resultados .

As configurações alteradas são aplicadas a janelas de consulta novas, mas não existentes.

Marian
fonte
10

Vejo que você afirmou claramente que está procurando uma solução no SSMS, mas pensei em fornecer uma solução do PowerShell caso isso ajude (o SQLPS pode ser acessado de dentro do SSMS 2008 e 2008 R2).

Você pode usar o SQLPS (ou o PowerShell comum com o snap-in do cmdlet SQL) para executar algo como isto:

Invoke-Sqlcmd -Query "sp_databases" -ServerInstance "LocalHost\R2" |
Export-Csv -Path "C:\temp\MyDatabaseSizes.csv" -NoTypeInformation

Eu posso continuar com este exemplo, se você estiver interessado.

Aaron Nelson - SQLvariant
fonte
3

Se você gosta da abordagem de script do PowerShell, eu tenho um script que exporta para CSV do SSMS via PowerShell . Eu gosto disso até agora, você pode ter um script SQL dinâmico, diabos, você pode selecionar qualquer texto e o SSMS passa para o script como argumento.

A única desvantagem é que não encontrei uma maneira inteligente de transmitir a conexão da janela atual. Minha solução atual é ter ferramentas diferentes configuradas que variam apenas em suas cadeias de conexão, como PROD_DW, PROD_DB, TEST_DW ...

billinkc
fonte
1

Você pode fazer uma união de união para adicionar explicitamente cabeçalhos de coluna como uma única seleção de linha unida às linhas reais, por exemplo:

SELECT 'col1' AS col1... 
UNION ALL 
SELECT T.col1... 
FROM TABLE T

A maior dificuldade dessa abordagem é a conversão forçada para o tipo de dados de caracteres na segunda seleção.

Phillip Senn
fonte
-1

O SSMS não é uma ferramenta de exportação de dados. Use o assistente de Importação / Exportação ou o BCP, que foram projetados como ferramentas de exportação de dados e farão o que você deseja fazer.

mrdenny
fonte
Se isso fosse estritamente verdade, não deveria ter nenhuma opção de exportação. Para qualquer software, se você adicionar um recurso, faça com que ele funcione corretamente. Pelo menos o SSMS 2008R2 falha nesse teste quando se trata de exportar. Além disso, o SSMS realmente pode satisfazer a necessidade do OP.
Eric J.
2
O SSMS é uma ferramenta de exportação de dados ad-hoc. Se você precisar de uma extração única de dados para, por exemplo, o Excel, o SSMS é a ferramenta mais rápida e fácil. No tempo necessário para a inicialização do Assistente de Exportação, você pode executar a consulta e salvar os resultados.
precisa