Salva risultati come CSV * con * header in SSMS


13

Con SQL Server 2008 R2, quando salvo i risultati come CSV non ci sono intestazioni. Posso aggirare questo copiando e incollando con "Copia con le intestazioni", o semplicemente afferrare le intestazioni e incollarle nel CSV ecc., Ma c'è un modo migliore per farlo?


In realtà, uno sp che fa questo potrebbe essere l'ideale.
Kyle Brandt,

Copia con le intestazioni quindi incollalo in Excel!

Risposte:


22

In SSMS è necessario modificare alcune opzioni:

Strumenti - Opzioni - Risultati della query - sql server - Risultati nella griglia (o testo) -> Includi intestazioni di colonna durante la copia o il salvataggio dei risultati .

Le impostazioni modificate vengono applicate a finestre di query nuove, ma non esistenti.


10

Vedo che hai affermato chiaramente che stai cercando una soluzione in SSMS ma ho pensato che avrei fornito una soluzione PowerShell nel caso in cui fosse di aiuto (SQLPS è accessibile dall'interno di SSMS 2008 e 2008 R2).

È possibile utilizzare SQLPS (o PowerShell normale con lo snapin del cmdlet SQL) per eseguire qualcosa del genere:

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

Posso continuare con questo esempio se sei interessato.


3

Se ti piace l'approccio script di PowerShell, ho uno script che esporta in CSV da SSMS tramite PowerShell . Mi piace fin qui che puoi avere uno script SQL dinamico, diamine puoi selezionare qualsiasi testo e SSMS lo passi allo script come argomento.

L'unico aspetto negativo è che non ho trovato un modo intelligente per passare lungo la connessione della finestra corrente. La mia attuale soluzione è avere diversi strumenti impostati che variano solo nelle stringhe di connessione, ad esempio PROD_DW, PROD_DB, TEST_DW ...


1

Puoi unire tutti i join per aggiungere esplicitamente le intestazioni di colonna come una singola riga selezionata unita rispetto alle righe reali, ad esempio:

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

Il più grande problema con questo approccio è il cast forzato al tipo di dati del personaggio nella seconda selezione.


-1

SSMS non è uno strumento di esportazione dei dati. Utilizzare la procedura guidata di importazione / esportazione o BCP entrambi progettati come strumenti di esportazione dei dati e faranno ciò che si sta cercando di fare.


Se ciò fosse strettamente vero, non dovrebbe avere alcuna opzione di esportazione. Per qualsiasi software, se aggiungi una funzionalità, fallo funzionare correttamente. Almeno SSMS 2008R2 non supera quel test quando si tratta di esportare. Inoltre, SSMS può effettivamente soddisfare le esigenze del PO.
Eric J.

2
SSMS è uno strumento di esportazione dati ad hoc. Se hai bisogno di un estratto una tantum di dati in, diciamo, Excel, SSMS è lo strumento più rapido e semplice. Nel tempo necessario per l'avvio dell'esportazione guidata è possibile eseguire la query e salvare i risultati.
Greenstone Walker
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.