Precisamos gravar os resultados da consulta SELECT em um arquivo csv. Como isso pode ser feito usando o T-SQL no SQL Server 2008 r2? Eu sei que isso pode ser feito no SSIS, mas por alguns motivos, não temos essa opção.
Tentei usar o processo sugerido no artigo abaixo, mas quando executo o processo, o SQL reclama que não pode executar sys.sp_OACreate e sys.sp_OADestroy, que são chamados nesse processo.
Você sabe como podemos ativar esses componentes ou conhece melhor maneira de gravar em um arquivo usando o T-SQL?
Desde já, obrigado.
Adicionando a resposta anterior, que ajuda a automatizar a ação, se você precisar apenas de tempos em tempos, pode fazê-lo no Management Studio, basta clicar com o botão direito do mouse no cabeçalho - Salvar resultados como -> escolher um arquivo .csv .
Ou, se você quiser fazer isso para cada instrução de seleção executada, poderá alterar a direção da saída dos resultados para um arquivo. Use Ferramentas -> Opções -> Resultados da consulta - Resultados para o arquivo .
Outra maneira, que pode ser automatizada facilmente e utiliza o SSIS, é usando o recurso Exportar Dados do Management Studio. Clique com o botão direito do mouse no banco de dados -> Tarefas -> Exportar dados. Há um assistente com muitas opções lá. Você deve escolher o banco de dados de origem, o destino e outras opções. Para o destino, verifique se é "Arquivo simples", procure e escolha o tipo .csv, escolha a formatação necessária e, no final, você obterá um pacote SSIS que pode ser salvo localmente e repetido conforme a necessidade.
fonte
Use T-SQL
Mas há algumas ressalvas:
fonte
Baixa tecnologia, mas ...
fonte
col1 + ',' + cast(col2 as varchar(10)) + ',' + col3
como um nome de coluna e imprime NULL em todo o lugar.Parece que você já tem uma solução aceitável, mas se você tiver o db mail configurado, poderá fazer algo assim:
Se você estiver enviando o arquivo por e-mail para algum lugar de qualquer maneira, poderá economizar algumas etapas.
fonte
Isso pode ser feito facilmente em um processo de 3 etapas:
Escreva sua consulta como uma
SELECT INTO
consulta. Isso basicamente exportará os resultados da sua consulta para uma tabela.Observe que essa tabela não pode existir quando a consulta é executada, pois esse tipo de consulta deseja criar a tabela como parte da execução.
Em seguida, use o SSIS para exportar os resultados dessa tabela para
.csv
. O assistente de exportação do SSIS permite escolher seu delimitador etc. Isso é realmente útil para usar um | delimitador nas instâncias em que o conjunto de resultados contém vírgulas.Clique com o botão direito do mouse em
DB Name > Tasks > Export Data
Quando a exportação estiver concluída, execute o
DROP TABLE
comando para limpar sua tabela de log.fonte
Eu uso o MS Access DoCMD para exportar CSV do SQL Server. É capaz de fazê-lo com um único comando. O banco de dados de acesso é usado apenas para ativar o comando de acesso. Ele tem um bom desempenho e, como um benefício adicional (não sabe por que), cria um schema.ini para a tabela exportada.
Adão
fonte
Este procedimento irá gerar um arquivo CSV com a saída da consulta que você passa como parâmetro. O segundo parâmetro é o nome do seu arquivo CSV, certifique-se de passar o nome do arquivo com um caminho gravável válido.
Aqui está o script para criar o procedimento:
fonte