it-swarm.it

Come trasferire o esportare i dati di SQL Server 2005 in Excel

Ho una semplice query SQL "Seleziona" e vorrei scaricare i risultati in un file Excel. Sono in grado di salvare solo come .csv e la conversione in .xls crea un output davvero brutto. In ogni caso, per quanto ne so (usando Google) questo non sembra essere così semplice. Qualsiasi aiuto sarebbe molto apprezzato.

47
YourMomzThaBomb

Usa "Dati esterni" da Excel. Può utilizzare ODBC per recuperare i dati da un'origine esterna: Dati/Ottieni dati esterni/Nuova query database

In questo modo, anche se i dati nel database cambiano, è possibile aggiornare facilmente.

40
Sunny Milenov

SSIS è un gioco da ragazzi per fare cose come questa ed è molto semplice (e questo è proprio il tipo di cosa per cui è).

  1. Fare clic con il tasto destro del mouse sul database in SQL Management Studio
  2. Vai su Attività e poi Esporta dati, vedrai una procedura guidata facile da usare.
  3. Il tuo database sarà la fonte, puoi inserire la tua query SQL
  4. Scegli Excel come destinazione
  5. Eseguilo alla fine della procedura guidata

Se lo desideri, puoi anche salvare il pacchetto SSIS (c'è un'opzione alla fine della procedura guidata) in modo da poterlo fare in base a una pianificazione o qualcosa del genere (e persino aprire e modificare per aggiungere più funzionalità se necessario).

59
Ryan Farley

Ho trovato un modo semplice per esportare i risultati delle query da SQL Server Management Studio 2005 a Excel.

1) Selezionare la voce di menu Query -> Opzioni query.

2) Impostare la casella di controllo in Risultati -> Griglia -> Includi intestazioni di colonna durante la copia o il salvataggio dei risultati.

Dopodiché, quando selezioni Tutti e Copia i risultati della query, puoi incollarli in Excel e saranno presenti le intestazioni di colonna.

26
Mikhail Glukhov

Vedi questo


Questo è di gran lunga il miglior post per esportare in Excel da SQL:

http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926

Per citare l'utente madhivanan,

Oltre a utilizzare DTS ed Esportazione guidata, possiamo anche usare questa query per esportare dati da SQL Server2000 a Excel

Creare un file Excel denominato testing con le intestazioni uguali a quelle delle colonne della tabella e utilizzare queste query

1 Esporta i dati in un file Excel esistente dalla tabella di SQL Server

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=D:\testing.xls;', 
    'SELECT * FROM [SheetName$]') select * from SQLServerTable

2 Esportare i dati da Excel nella nuova tabella di SQL Server

select * 
into SQLServerTable FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=D:\testing.xls;HDR=YES', 
    'SELECT * FROM [Sheet1$]')

3 Esporta i dati da Excel alla tabella esistente di SQL Server

Insert into SQLServerTable Select * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=D:\testing.xls;HDR=YES', 
    'SELECT * FROM [SheetName$]')

4 Se non si desidera creare in anticipo un file Excel e si desidera esportare i dati in esso, utilizzare

EXEC sp_makewebtask 
    @outputfile = 'd:\testing.xls', 
    @query = 'Select * from Database_name..SQLServerTable', 
    @colheaders =1, 
    @FixedFont=0,@lastupdated=0,@resultstitle='Testing details'

(Ora puoi trovare il file con i dati in formato tabulare)

5 Per esportare i dati in un nuovo file Excel con intestazione (nomi di colonna), creare la seguente procedura

create procedure proc_generate_Excel_with_columns
(
    @db_name    varchar(100),
    @table_name varchar(100),   
    @file_name  varchar(100)
)
as

--Generate column names as a recordset
declare @columns varchar(8000), @sql varchar(8000), @data_file varchar(100)
select 
    @columns=coalesce(@columns+',','')+column_name+' as '+column_name 
from 
    information_schema.columns
where 
    [email protected]_name
select @columns=''''''+replace(replace(@columns,' as ',''''' as '),',',',''''')

--Create a dummy file to have actual data
select @data_file=substring(@file_name,1,len(@file_name)-charindex('\',reverse(@file_name)))+'\data_file.xls'

--Generate column names in the passed Excel file
set @sql='exec master..xp_cmdshell ''bcp " select * from (select '[email protected]+') as t" queryout "'[email protected]_name+'" -c'''
exec(@sql)

--Generate data in the dummy file
set @sql='exec master..xp_cmdshell ''bcp "select * from '[email protected]_name+'..'[email protected]_name+'" queryout "'[email protected]_file+'" -c'''
exec(@sql)

--Copy dummy file to passed Excel file
set @sql= 'exec master..xp_cmdshell ''type '[email protected]_file+' >> "'[email protected]_name+'"'''
exec(@sql)

--Delete dummy file 
set @sql= 'exec master..xp_cmdshell ''del '[email protected]_file+''''
exec(@sql)

Dopo aver creato la procedura, eseguirla fornendo il nome del database, il nome della tabella e il percorso del file:

EXEC proc_generate_Excel_with_columns 'your dbname', 'your table name','your file path'

È un totale di 29 pagine, ma questo è perché gli altri mostrano vari altri modi, così come le persone che fanno domande come questa su come farlo.

Segui interamente quel thread e guarda le varie domande che le persone hanno posto e come vengono risolte. Ho acquisito un po 'di conoscenza semplicemente scremandolo e ne ho usato parti per ottenere i risultati attesi.

Per aggiornare singole celle

Un membro anche lì Peter Larson pubblica quanto segue: Penso che qui manchi qualcosa. È bello poter esportare e importare in file Excel, ma che ne dici di aggiornare singole celle? O un intervallo di celle?

Questo è il principio di come lo gestisci

update OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=c:\test.xls;hdr=no', 
'SELECT * FROM [Sheet1$b7:b7]') set f1 = -99

Puoi anche aggiungere formule a Excel usando questo:

update OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=c:\test.xls;hdr=no', 
'SELECT * FROM [Sheet1$b7:b7]') set f1 = '=a7+c7'

Esportazione con nomi di colonna usando T-SQL

Il membro Mladen Prajdic ha anche un post sul blog su come farlo qui

Riferimenti: www.sqlteam.com (a proposito, questo è un blog/forum eccellente per chiunque cerchi di ottenere di più da SQL Server).

13
JonH

Ecco un video che ti mostrerà, passo dopo passo, come esportare i dati in Excel. È un'ottima soluzione per problemi "una tantum" in cui è necessario esportare in Excel:
Rapporti ad hoc

5

Se stai cercando elementi ad hoc anziché qualcosa che inseriresti in SSIS. Dall'interno di SSMS è sufficiente evidenziare la griglia dei risultati, copiare, quindi incollare in Excel, non è elegante, ma funziona. Quindi è possibile salvare come .xls nativo anziché .csv

5
Mitchel Sellers

È MOLTO più semplice farlo da Excel. !! Apri dati Excel> Importa/esporta dati> Importa dati Accanto al nome del file fai clic sul pulsante "Nuova origine". Benvenuto nella procedura guidata Connessione dati, scegli Microsoft SQL Server. Fai clic su Avanti. Immettere il nome e le credenziali del server. Dal menu a discesa, scegli il database che contiene la tabella di cui hai bisogno. Seleziona la tua tabella quindi Avanti ..... Inserisci una descrizione se lo desideri e fai clic su Fine. Al termine e di nuovo in Excel, fai clic su "OK" Facile.

3
Bill Anderson

Crea l'origine dati Excel e inserisci i valori,

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=D:\testing.xls;', 
'SELECT * FROM [SheetName$]') select * from SQLServerTable

Maggiori informazioni sono disponibili qui http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926

2
Prathap

Uno strumento utile Converti SQL in Excel converte la tabella SQL o il risultato della query SQL in file Excel senza programmazione.

Caratteristiche principali - Converti/esporta una tabella SQL in file Excel - Converti/esporta più tabelle (risultati di query multiple) in più fogli di lavoro Excel. - Consenti query TSQL flessibili che possono avere più istruzioni SELECT o altre istruzioni di query complesse.

B. Saluti, Alex

1
Alex

Esistono diversi strumenti per esportare/importare da SQL Server a Excel.

Google è tuo amico :-)

Usiamo DbTransfer (che è uno di quelli che possono esportare un database completo anche in un file Excel) qui: http://www.dbtransfer.de/Products/DbTransfer .

Abbiamo già usato la funzione openrowset del server sql, ma non ne sono mai stato contento, perché non è molto facile da usare e manca di funzionalità e velocità ...

1
Michael Geller

È sempre possibile utilizzare ADO per scrivere i risultati nelle celle del foglio di lavoro da un oggetto recordset

1
Russ Cam

Prova lo strumento "Importa ed esporta dati (32 bit)". Disponibile dopo l'installazione di MS SQL Management Studio Express 2012.

Con questo strumento è molto semplice selezionare un database, una tabella o inserire la tua query SQL e scegliere una destinazione (ad esempio un file MS Excel).

0
Dennis