Ci sono diversi modi per esportare/importare i dati di SQL Server in un file Excel. In questo articolo, verranno spiegati un paio di modi per importare ed esportare i dati di SQL Server in un file Excel:
- Esportare i dati di SQL Server in un file Excel utilizzando
- la procedura guidata di importazione ed esportazione di SQL Server
- T-SQL
- Esportazione in Excel da ApexSQL Complete
- Importa i dati di SQL Server in Excel utilizzando la procedura guidata di connessione dati
Esporta i dati di SQL Server in un file Excel utilizzando la procedura guidata di importazione ed esportazione di SQL Server
In SQL Server Management Studio (SSMS), c’è una funzione che prevede l’esportazione di dati da una fonte di dati ad un’altra fonte di dati; in questo caso, i dati da SQL Server saranno copiati in un file Excel attraverso Export Wizard.
Per iniziare a usare questa funzione, andate su Object Explorer, cliccate con il tasto destro del mouse su un qualsiasi database (es. AdventureworksDW2016CTP3), sotto Tasks, scegliete il comando Export Data:
Questo aprirà la finestra SQL Server Import and Export Wizard:
Per procedere con l’esportazione dei dati SQL Server in un file Excel, cliccate il pulsante Next. Si aprirà la finestra Choose a Data Source. In questa finestra si può scegliere un’origine da cui copiare i dati:
Dalla casella a discesa Origine dati, scegliere la voce SQL Server Native Client 11.0. Nella casella a discesa Nome del server, scegliete l’istanza di SQL Server da cui devono essere copiati i dati. Nella sezione Autenticazione, scegliete la modalità di autenticazione per la connessione all’origine dati e nella casella a discesa Database, scegliete il database da cui i dati saranno copiati. Dopo che tutte queste opzioni sono state impostate, clicca sul pulsante Next per procedere.
Questo aprirà la finestra Choose a Destination in cui può essere specificato dove copiare i dati dall’origine dati:
Nella casella a discesa Destination, scegli la voce Microsoft Excel. Sotto il percorso del file Excel, scegliete la destinazione per i dati copiati dall’origine dati SQL Server (SQL Data.xlsx). Nella casella a discesa Versione di Excel, scegliete la versione del foglio di lavoro di Microsoft Excel. Dopo aver impostato tutto ciò, premi il pulsante Next per continuare. Ma dopo aver premuto il pulsante Next, potrebbe apparire il seguente messaggio di avviso:
L’operazione non può essere completata.
ADDITIONAL INFORMATION:
Il provider ‘Microsoft.ACE.OLEDB.12.0’ non è registrato sulla macchina locale. (System.Data)
Questo succede perché SSMS è un’applicazione a 32 bit e quando lanci l’Export Wizard via SSMS, lancia una versione a 32 bit di Export Wizard. D’altra parte, la macchina (sistema operativo) su cui è installato SSMS è una versione a 64 bit e il SQL Server installato è una versione a 64 bit.
Per risolvere questo problema, chiudete SSMS, andate nel menu Start e trovate la versione a 64 bit di SQL Server Import and Export Data:
Dopo aver lanciato questo SQL Server Import and Export Wizard, verrà richiesta la stessa finestra che viene utilizzata tramite SSMS. Dopo aver impostato tutte le opzioni precedenti, cliccate sul pulsante Next. Apparirà la finestra Specify Table Copy or Query:
In questa finestra si può specificare se copiare i dati da una o più tabelle e viste o copiare i risultati di una query.
Selezionare il pulsante di opzione Copy data from one or more tables or views e cliccare il pulsante Next. La finestra Seleziona tabella e viste di origine permette di scegliere una o più tabelle e viste da cui si desidera esportare i dati di SQL Server in un file Excel facendo clic sulla casella di controllo accanto al nome della tabella/vista:
Come si può notare, non appena si seleziona la casella di controllo accanto a una tabella/vista, il nome della tabella/vista viene copiato nella colonna Destinazione. Questo nome rappresenta il nome del foglio dove i dati della tabella saranno messi, questo nome può essere cambiato in quello che vuoi, ma per ora, sarà lasciato com’è:
Per vedere in anteprima quali dati saranno generati in un file Excel, clicca sul pulsante Anteprima:
Dopo aver scelto quali tabelle/visualizzazioni verranno copiate in un file Excel, clicca sul pulsante Next:
Nella finestra Salva come pacchetto di esecuzione, spunta la casella Esegui immediatamente e clicca sul pulsante Avanti:
La finestra Completa la procedura guidata mostra tutte le opzioni scelte per le operazioni di esportazione. Per finalizzare il processo di esportazione dei dati di SQL Server in un file Excel, cliccare sul pulsante Finish. L’ultima finestra della procedura guidata di importazione ed esportazione di SQL Server mostra lo stato dei dati sono stati esportati con successo o si sono verificati alcuni errori durante l’esportazione dei dati:
Nel nostro caso, i dati sono stati generati con successo nel file SQL Data.xlsx nel foglio DimScenario:
Esporta i dati di SQL Server in un file Excel usando il codice T-SQL
Il Transact-SQL OPENROWSET può essere usato per esportare i dati di SQL Server in un file Excel tramite SSMS. In un editor di query digitare ed eseguire il seguente codice:
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;
Database=C:\Users\Zivko\Desktop\SQL Data.xlsx;','SELECT * FROM ')
SELECT * FROM dbo.DimScenario
Ma, quando si esegue il codice di cui sopra, può verificarsi il seguente errore:
Msg 15281, Level 16, State 1, Line 1
QL Server ha bloccato l’accesso a STATEMENT ‘OpenRowset/OpenDatasource’ del componente ‘Ad Hoc Distributed Queries’ perché questo componente è disattivato come parte della configurazione di sicurezza per questo server. Un amministratore di sistema può abilitare l’uso di ‘Ad Hoc Distributed Queries’ usando sp_configure. Per maggiori informazioni sull’abilitazione delle ‘Ad Hoc Distributed Queries’, cercate ‘Ad Hoc Distributed Queries’ in SQL Server Books Online.
Per risolvere questo errore l’opzione Ad Hoc Distributed Queries dovrebbe essere abilitata Questo può essere fatto utilizzando la procedura sp_configure ed eseguendo il seguente codice SQL in un editor di query:
EXEC sp_configure 'show advanced options', 1RECONFIGUREEXEC sp_configure 'Ad Hoc Distributed Queries', 1RECONFIGURE
Dopo aver eseguito il codice di cui sopra, apparirà il seguente messaggio che indica che le opzioni mostra opzioni avanzate e Ad Hoc Distributed Queries sono abilitate:
L’opzione di configurazione ‘mostra opzioni avanzate’ è passata da 0 a 1. Esegui l’istruzione RECONFIGURE per installare.
L’opzione di configurazione ‘Ad Hoc Distributed Queries’ è cambiata da 0 a 1. Eseguire l’istruzione RECONFIGURE per installare.
Ora, quando il codice viene nuovamente eseguito:
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;
Database=C:\Users\Zivko\Desktop\SQL Data.xlsx;','SELECT * FROM ')
SELECT * FROM dbo.DimScenario
Il seguente errore potrebbe apparire:
OLE DB provider “Microsoft.ACE.OLEDB.12.0” per il server collegato “(null)” ha restituito il messaggio “Il motore di database Microsoft Access non può aprire o scrivere sul file “. È già aperto esclusivamente da un altro utente, oppure è necessario il permesso di visualizzare e scrivere i suoi dati.”.
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider “Microsoft.ACE.OLEDB.12.0” per il server collegato “(null)
Questo di solito accade a causa di permessi inadeguati.
Maggiori informazioni su come risolvere questi problemi possono essere trovate nella pagina Come interrogare i dati di Excel usando i server collegati di SQL Server.
Un modo per risolvere questo problema è aprire SSMS come amministratore ed eseguire nuovamente il codice. Ma questa volta potrebbe apparire un altro errore:
Msg 213, Level 16, State 1, Line 1
Il nome della colonna o il numero di valori forniti non corrisponde alla definizione della tabella.
Per risolvere questo, aprire il file excel (ad esempio SQL Data.xlsx) per il quale si prevede di memorizzare i dati dalla tabella SQL Server (ad esempio dbo.DimScenario) e inserire i nomi delle colonne che rappresentano i nomi delle colonne della tabella DimScenario:
Chiudi il file SQL Data.xlsx ed eseguite nuovamente il codice:
Ora, apparirà il seguente messaggio:
(3 righe interessate)
Infine, i dati della tabella SQL Server sono copiati nel file Excel:
Importa i dati di SQL Server in Excel usando la finestra di dialogo Data Connection Wizard
Un altro modo per copiare i dati dalla tabella di SQL Server in un file Excel è usare la finestra di dialogo Data Connection Wizard da Excel.
Per farlo, apri un file Excel (per esempio SQL Data.xlsx) nel quale vuoi importare i dati. Nella scheda Dati, sotto il sottomenu Da altre fonti, scegli il comando Da SQL Server:
Questo aprirà la finestra di dialogo Data Connection Wizard. Nel nome del server, inserisci il nome dell’istanza di SQL Server da cui i dati devono essere copiati. Nella sezione Log on credentials, scegliete la modalità di autenticazione per la connessione all’origine dati e cliccate sul pulsante Next:
Dalla casella a discesa Select the database that contains the data you want, scegliete il database dal quale i dati saranno copiati. Nella griglia, saranno elencate tutte le tabelle e le viste disponibili. Scegli una tabella/vista desiderata (ad esempio DimScenario) e clicca sul pulsante Next per procedere.
In questa finestra, lascia tutto com’è e premi il pulsante Fine:
Nella finestra di dialogo Importa dati, scegli il pulsante di opzione Tabella, nella sezione Dove vuoi mettere i dati? scegliere il pulsante di opzione Foglio di lavoro esistente e premere il pulsante OK:
Dopo aver premuto il pulsante OK, i dati della tabella DimScenario saranno copiati nel file SQL Data.xslx:
Esporta i dati di SQL Server in un file Excel utilizzando Export to Excel di ApexSQL Complete
Utilizzando la funzione Export to Excel di ApexSQL Complete, add-in per SSMS e Visual Studio, l’esportazione dei dati dalla tabella SQL Server in un file Excel può essere effettuata con un clic.
In un editor di query, digitare ed eseguire il seguente codice:
SELECT * FROM dbo.DimScenario ds
Dalla griglia dei risultati, selezionare i dati che si desidera esportare in un file Excel, cliccare con il tasto destro nella griglia dei risultati e, dal menu di contesto, scegliere l’opzione Esporta in Excel:
Questo aprirà una nuova cartella di lavoro Excel e i dati selezionati dalla griglia Risultati saranno copiati nel primo foglio di lavoro:
Maggiori informazioni sull’esportazione in Excel tramite ApexSQL Complete sono disponibili nella pagina Esportazione in Excel.
Vedi anche:
- Tutorial: Importare i dati in Excel e creare un modello di dati
- Iniziare con questo semplice esempio della procedura guidata di importazione ed esportazione
- Come interrogare i dati di Excel utilizzando i server collegati a SQL Server
- Esportare in Excel