2011-09-12 116 views
20

Ho una query che restituisce un set di dati molto grande. Non riesco a copiarlo e incollarlo in Excel, cosa che di solito faccio. Ho fatto alcune ricerche su come esportare direttamente su un foglio Excel. Sto eseguendo SQL SERVER 2008 su un server che esegue Microsoft Server 2003. Sto cercando di utilizzare il fornitore di dati Microsoft.Jet.OLEDB.4.0 ed Excel 2007. Ho messo insieme una piccola porzione di codice simile a quella di I Ho visto in esempi.Esportare dati query SQL in Excel

INSERT INTO OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 
'Data Source=C:\Working\Book1.xlsx;Extended Properties=EXCEL 12.0;HDR=YES') 
SELECT productid, price FROM dbo.product 

Tuttavia, questo non funziona, sto ottenendo un messaggio di errore che

"Sintassi non corretta in prossimità della parola chiave 'SELECT'".

Qualcuno ha qualche idea su come fare questo o forse un approccio migliore?

+0

Potrebbe anche essere necessario specificare un foglio con '[Foglio1]' Penso – JNK

+1

È possibile specificare con [Foglio1]? Ohhhh [Shit] !!! – JBone

risposta

40

Non so se questo è quello che stai cercando, ma è possibile esportare i risultati in Excel in questo modo:

Nel riquadro dei risultati, fare clic sulla cella in alto a sinistra per evidenziare tutti i record , quindi fare clic con il tasto destro del mouse sulla cella in alto a sinistra e fare clic su "Salva risultati con nome". Una delle opzioni di esportazione è CSV.

si potrebbe dare a questo un colpo troppo:

INSERT INTO OPENROWSET 
    ('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=c:\Test.xls;','SELECT productid, price FROM dbo.product') 

Infine, si può considerare di usare SSIS (sostituito DTS) per le esportazioni di dati. Ecco un link ad un tutorial:

http://www.accelebrate.com/sql_training/ssis_2008_tutorial.htm

+4

Nota che con il pulsante destro del mouse/Salva con nome ... CSV non cita campi di testo contenenti virgole o newline. Quindi, se uno qualsiasi dei tuoi dati contiene virgole, ti ritroverai con un CSV non valido. – aucuparia

+0

Salva risultati Come non esportare le intestazioni di colonna. – YDS

11

Se è necessario esportare in Excel, è possibile utilizzare la procedura guidata di esportazione dei dati. Fare clic con il tasto destro del mouse sul database, Attività-> Esporta dati.

+1

Passare a mettere questo in una stored procedure e deve essere eseguito come un evento su una pagina – JBone

1

Ho avuto un problema simile, ma con un tocco - le soluzioni elencate in precedenza hanno lavorato quando il gruppo di risultati era da una query, ma nella mia situazione, ho avuto più singoli query di selezione per il quale avevo bisogno di risultati da esportare in Excel. Qui di seguito è solo un esempio per illustrare, anche se avrei potuto fare una clausola name in ...

select a,b from Table_A where name = 'x' 
select a,b from Table_A where name = 'y' 
select a,b from Table_A where name = 'z' 

La procedura guidata è stata lasciando me esportare il risultato da una query per eccellere, ma non tutti i risultati di query diverse in questo caso.

Quando ho eseguito una ricerca, ho scoperto che era possibile disattivare i risultati nella griglia e abilitare i risultati in Testo. Quindi, premi Ctrl + T, quindi esegui tutte le istruzioni. Questo dovrebbe mostrare i risultati come un file di testo nella finestra di output. Puoi manipolare il testo in un formato delimitato da tabulazioni per poterlo importare in Excel.

È anche possibile premere Ctrl + Shift + F per esportare i risultati in un file - esporta come file .rpt che può essere aperto utilizzando un editor di testo e modificato per l'importazione excel.

Spero che questo aiuti gli altri che hanno un problema simile.

Problemi correlati