Como posso exportar um resultado da consulta para um arquivo .csv no SQL Server 2008?
sql-server-2008
Ouro
fonte
fonte
Respostas:
Aqui está uma versão em tela cheia dessa imagem, abaixo
Isso exibirá os resultados da sua consulta como texto delimitado por vírgula.
Para salvar os resultados de uma consulta em um arquivo: Ctrl + Shift + F
fonte
Ctrl+Shift+F
, apenas altera o modo de saída, não afeta os resultados se você já executou a consulta. Para que isso seja refletido, você deve executar novamente a consulta. Ao executá-lo no modo "Resultados em arquivo", ele deve ser solicitado onde você deseja salvar os resultados.Eu sei que isso é um pouco antigo, mas aqui está uma maneira muito mais fácil ...
Execute sua consulta com as configurações padrão (coloca os resultados no formato de grade, se o seu não estiver no formato de grade, veja abaixo)
Clique com o botão direito do mouse nos resultados da grade e clique em "Salvar resultados como" e salve-o.
Se seus resultados não estiverem no formato de grade, clique com o botão direito do mouse em onde você escreve a consulta, passe o mouse em "Resultados para" e clique em "Resultados na grade"
Lembre-se de que você NÃO captura os cabeçalhos das colunas!
Boa sorte!
fonte
Você pode usar o PowerShell
fonte
Add-PSSnapin SqlServerCmdletSnapin100
eAdd-PSSnapin SqlServerProviderSnapin100
.Invoke-Sqlcmd -ServerInstance MySQLserver123 -Query $QueryFmt -querytimeout 600 | Export-CSV $AttachmentPath
Install-Module -Name SqlServer
(mas não precisava encaixar esses cmdlets). Além disso, eu tinha guardado os comandos em um script, o que não seria executado até que eu tivesse mudado a política de execução:Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
.RemoteSigned
política de execução será suficiente.Se o banco de dados em questão for local, provavelmente é a maneira mais robusta de exportar um resultado de consulta para um arquivo CSV (ou seja, oferecendo mais controle).
Script do PowerShell
Execute o PowerShell como administrador
fonte
Invoke-Sqlcmd -ServerInstance MySQLserver123 -Query $QueryFmt -querytimeout 600 | Export-CSV $AttachmentPath
MS Excel -> Dados -> Nova Consulta -> Do Banco de Dados .. siga as etapas
fonte
Com base na resposta do NS, tenho um script do PowerShell que exporta para um arquivo CSV com aspas ao redor do campo e separados por vírgula e ignora as informações do cabeçalho no arquivo.
As duas primeiras linhas permitem a capacidade de usar o comando Invoke-SqlCmd -let.
fonte
Use T-SQL :
Mas há algumas ressalvas:
Você precisa ter o provedor Microsoft.ACE.OLEDB.12.0 disponível. O provedor Jet 4.0 também funcionará, mas é antigo, então usei este.
O arquivo .CSV já deverá existir. Se você estiver usando cabeçalhos (
HDR=YES
), verifique se a primeira linha do arquivo .CSV é uma lista delimitada de todos os campos.fonte
O uso da técnica nativa do SQL Server Management Studio para exportar para CSV (como sugerido em 8kb) não funcionará se seus valores contiverem vírgulas, porque o SSMS não quebra valores entre aspas duplas. Uma maneira mais robusta que funcionou para mim é simplesmente copiar os resultados (clique dentro da grade e, em seguida, CTRL-A, CTRL-C) e colá-lo no Excel. Em seguida, salve como arquivo CSV no Excel.
fonte
Você pode usar o QueryToDoc ( http://www.querytodoc.com ). Permite escrever uma consulta em um banco de dados SQL e exportar os resultados - depois de escolher o delimitador - para Excel, Word, HTML ou CSV
fonte
como @Slogmeister Extraordinaire Quoted está correto.
É necessário ter 1> Arquivo já presente nas colunas 2> É necessário ter o Office instalado
Erros enfrentados
1
Mensagem 7303, nível 16, estado 1, linha 1 Não é possível inicializar o objeto de fonte de dados do provedor OLE DB "Microsoft.ACE.OLEDB.12.0" para o servidor vinculado "(nulo)". "
64 bits http://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine_x64.exe
32 bits http://download.microsoft.com/download/f/d/8/fd8c20d8-e38a-48b6-8691-542403b91da1/AccessDatabaseEngine.exe
2
A mensagem 15281, nível 16, estado 1, linha 1 do SQL Server bloqueou o acesso à DECLARAÇÃO 'OpenRowset / OpenDatasource' do componente 'Consultas Distribuídas Ad Hoc' porque esse componente está desativado como parte da configuração de segurança deste servidor. Um administrador do sistema pode ativar o uso de 'Consultas distribuídas ad hoc' usando sp_configure. Para obter mais informações sobre como ativar 'Consultas distribuídas ad hoc', procure 'Consultas distribuídas ad hoc' nos Manuais Online do SQL Server.
fonte
Se você não quiser usar o Powershell, esta resposta é uma variação da ótima resposta de 8kb. A única diferença é que, em vez de selecionar CSV como formato de saída, selecione Delimitado por tabulação. Dessa forma, se houver vírgulas nos seus dados, ele não pulará as células no Excel. Além disso, se você tiver o delimitador padrão do Excel definido como guias, poderá simplesmente copiar todos os resultados da consulta SSMS (CTRL-A, CTRL-C) e colar no Excel (não é necessário salvar como arquivo e importar para o Excel ):
Agora você pode executar sua consulta, depois fazer um CTRL-A para selecionar todos os resultados, depois CTRL-C para copiar para a área de transferência, depois mudar para o Excel 2013 (pode também funcionar em 2007 também) e colar - assumindo o padrão do Excel delimitador está definido para tab.
Imagem da tela Opções de consulta do SSMS
fonte
Sim, tudo isso é possível quando você tem acesso direto aos servidores. Mas e se você tiver apenas acesso ao servidor a partir de um servidor de aplicativos / web? Bem, a situação era essa conosco há muito tempo e a solução foi o SQL Server Export to CSV .
fonte