Quando lavori come amministratore o sviluppatore di database di SQL Server, non puoi vivere nel tuo mondo isolato di SQL Server senza comunicare con altre origini dati. Ad esempio, raramente c'è un giorno in cui non ti verrà chiesto di importare dati da un file Excel, Access o CSV nella tabella di SQL Server. Oppure, al contrario, esporta una delle tue tabelle del database di SQL Server in un file esterno in modo che questa tabella possa essere utilizzata in un altro motore di database o essere analizzata esternamente dal team corrispondente.
SQL Server fornisce una serie di metodi che possono essere utilizzati per esportare una tabella di database SQL Server esistente in un file Excel o di testo e importare dati da un'origine dati esterna in una tabella di database SQL Server nuova o esistente. In questo articolo tratteremo gradualmente tutti questi metodi.
Utilità BCP
L'utilità di copia di massa del programma, nota anche come BCP, è un'utilità della riga di comando che può essere utilizzata per importare un numero elevato di righe da un file di dati del sistema operativo nella tabella del database di SQL Server o per esportare una tabella di database di SQL Server esistente in un file di dati di sistema.
La sintassi dello strumento BCP contiene un'ampia varietà di opzioni. Questi sono quelli più comunemente usati:
- Il nome della tabella o vista del database di SQL Server:fungerà da origine dati in caso di processo di esportazione dati e da destinazione in caso di processo di importazione dati.
- La direzione dei dati, dove IN indica l'importazione dei dati e OUT indica l'esportazione dei dati.
- Il nome del file di dati locale che fungerà da origine in caso di processo di importazione dati e come destinazione in caso di processo di esportazione dati.
- -S server\istanza – viene utilizzato per specificare il nome dell'istanza di SQL Server.
- –d – viene utilizzato per specificare il database che contiene la tabella di origine o di destinazione.
- -T – viene utilizzato per specificare che l'autenticazione di Windows verrà utilizzata per la connessione a SQL Server.
- -U nome utente e -P password – specificano il nome utente e la password utilizzati per connettersi all'istanza di SQL Server.
- L'utilità di copia di massa del programma, nota anche come BCP, è un'utilità della riga di comando che può essere utilizzata per importare un numero elevato di righe da un file di dati del sistema operativo nella tabella del database di SQL Server o per esportare una tabella di database di SQL Server esistente in un file di dati del sistema operativo. – vengono utilizzati per specificare il formato del file di dati di origine o di destinazione e i delimitatori utilizzati in quel file di dati.
Ad esempio, il comando BCP riportato di seguito viene utilizzato per esportare il contenuto della tabella del database Employee_Main in blocco in un file CSV, come segue:
bcp AdventureWorks2016CTP3.dbo.Employee_Main out C:\Test\Employees.csv -S MININT-QQBE87A -T -c -t , -r \n
Questi dati verranno rapidamente copiati in un file CSV, come mostrato nel risultato seguente:
Per importare il contenuto di un file CSV in una tabella di database, è possibile utilizzare il seguente comando BCP per ottenere ciò rapidamente in blocco:
bcp AdventureWorks.dbo.Employee_Main in C:\Test\Employees.csv -S MININT-QQBE87A -T -c -t , -r \n
E i dati verranno inseriti nella tabella del database, come mostrato nel risultato seguente:
Dedicando alcuni minuti alla preparazione di questi comandi con le opzioni appropriate, puoi facilmente utilizzare l'utilità BCP per importare dati o esportarli in file di dati di testo.
INSERTO SFUSO
BULK INSERT T-SQL funziona in modo simile al BCP IN comando e viene utilizzato per importare dati da un file di dati accessibile dal servizio SQL Server in una tabella di database di SQL Server, il tutto eseguito direttamente all'interno di SQL Server. A differenza del comando BCP IN, l'istruzione BULK INSERT può essere raggruppata con altre operazioni in un'unica transazione di SQL Server in esecuzione sotto il tuo controllo.
L'istruzione BULK INSERT T-SQL di seguito può essere utilizzata per importare dati da un file CSV in una tabella di database esistente, specificando sia la colonna che i delimitatori di riga, come mostrato di seguito:
BULK INSERT AdventureWorks.dbo.Employee_Main FROM 'C:\Test\Employees.csv' WITH ( FIELDTERMINATOR =',', ROWTERMINATOR ='\n' ); GO
OPENROWSET
La funzione OPENROWSET viene utilizzata per connettersi a origini dati utilizzando un provider di connessione OLEDB e quindi utilizzare la query T-SQL specificata per recuperare i dati da tale origine dati. I principali vantaggi della funzione OPENROWSET rispetto ai metodi BCP e BULK INSERT sono i seguenti:
- puoi filtrare i dati recuperati dall'istruzione OPENROWSET utilizzando una clausola WHERE
- puoi usarlo in un'istruzione SELECT per leggere i dati dall'origine dati, non solo con l'istruzione INSERT
Per utilizzare l'istruzione OPENROWSET, dovrai abilitare le query distribuite ad hoc prima opzione di configurazione del sistema utilizzando lo script seguente:
sp_configure 'show advanced options', 1; RECONFIGURE; GO sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE; GO
Dopo aver abilitato l'opzione di configurazione del sistema delle query distribuite ad hoc, è possibile utilizzare la funzione OPENROWSET per importare i dati nelle tabelle del database di SQL Server da file CSV con un formato dati precedentemente definito, come mostrato nella query T-SQL di seguito:
INSERT INTO [AdventureWorks].[dbo].[Employee_Main] ([EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber]) SELECT [EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber] FROM OPENROWSET( BULK 'C:\Test\Employees.csv', FORMATFILE = 'C:\Test\Fmt.xml' ) AS rows;
Server collegato
Il server collegato a SQL Server è un oggetto server configurato per consentire a Motore di database di SQL ServerSQL Server la connessione a diversi tipi di origini dati OLE DB all'esterno dell'istanza di SQL ServerSQL Server. Il server collegato può essere facilmente creato utilizzando SQL Server Management Studio o i comandi T-SQL, come mostrato di seguito:
Una volta creato, il server collegato può essere facilmente utilizzato per accedere all'origine dati remota e importare i dati corrispondenti nella tabella del database di SQL Server come mostrato nella query T-SQL di seguito:
INSERT INTO [AdventureWorks].[dbo].[Employee_Main] ([EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber],[EMP_Address]) SELECT [EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber],[EMP_Address] FROM TEST...Employee_Main$
Importazione guidata di SQL Server
La procedura guidata di esportazione e importazione di SQL Server fornisce un'interfaccia semplice per la creazione di pacchetti di SQL Server Integration Service che possono essere utilizzati immediatamente o salvati per un uso successivo. Questi pacchetti consentono di importare dati ed esportarli in un'ampia varietà di origini dati, partendo da semplici file flat e finendo con motori di database più complessi.
La procedura guidata Esporta e Importa può essere utilizzata, ad esempio, per importare dati da un'origine dati Excel in una tabella di database esistente. I seguenti passaggi descrivono questo processo:
- In Esplora oggetti di SQL Server Management Studio, fare clic con il pulsante destro del mouse sul database AdventureWorks che contiene la tabella in cui scrivere i dati. Quindi, scegli Importa dati opzione dalle Attività sottomenu:
- Verrà aperta la procedura guidata di importazione ed esportazione di SQL Server. In Scegli un'origine dati finestra, specificare il tipo di origine dati. In questo particolare esempio, sceglieremo Microsoft Excel e il percorso completo per il file Excel desiderato. Dopo averlo specificato, fai clic su Avanti pulsante:
- Nella sezione Scegli una destinazione finestra, verrà richiesto di specificare il tipo di destinazione in cui verranno scritti i dati di origine. Nel nostro esempio, è il database di SQL Server. Verrà inoltre richiesto di specificare il nome del server, le credenziali e il nome del database in cui si trova la tabella di destinazione. Dopo aver fornito tutte queste informazioni, fai clic su Avanti procedere:
- Nella Specifica copia tabella o query finestra, avrai la possibilità di copiare tutti i dati dall'origine a una tabella esistente o nuova, oppure di scrivere una query personalizzata per recuperare un intervallo specifico di dati. Una volta deciso, fai clic su Avanti pulsante:
- Nel Seleziona tabelle e viste di origine finestra, specificare il foglio o la tabella di origine dall'origine dati e la tabella di destinazione in cui verranno scritti i dati di origine. Avrai la possibilità di visualizzare in anteprima l'origine, controllare la mappatura delle colonne tra le tabelle di origine e di destinazione e specificare se i dati devono essere aggiunti a una tabella esistente oa una tabella appena generata. Fai clic su Avanti pulsante per procedere:
- Nel pacchetto Salva ed esegui Finestra, hai la possibilità di salvare il pacchetto SSIS creato all'interno dell'Importazione ed esportazione guidata per eseguirlo immediatamente o salvarlo per la pianificazione o eseguirlo in un secondo momento. Fai clic su Avanti pulsante per procedere:
- Nel Completa la procedura guidata finestra, vedrai un riepilogo delle opzioni selezionate e delle impostazioni fornite. Fai clic su Fine pulsante per iniziare a copiare i dati:
- Dopo aver completato il processo di copia, la procedura guidata visualizzerà il numero di record copiati in ciascuna tabella. Se non ci sono errori, puoi fare clic su Chiudi pulsante per chiudere la finestra:Puoi vedere dall'esempio precedente che la procedura guidata di importazione ed esportazione può essere facilmente utilizzata per copiare dati tra tipi diversi delle origini dati e delle destinazioni, senza considerare la relazione tra le tabelle. Se la tabella ha un vincolo di chiave esterna che fa riferimento a una delle colonne della tabella padre, è necessario gestire manualmente l'ordine del processo di copia dei dati. Inoltre, per avviare un nuovo processo di importazione dei dati, dovrai chiudere la procedura guidata e riaprirla.
Pompa dati dbForge
dbForge Data Pump è uno strumento di terze parti incluso in SQL Server Management Studio come componente aggiuntivo. Può essere utilizzato per migrare facilmente i dati tra SQL Server e diverse origini dati esterne. Ti consente di importare ed esportare da oltre 10 formati di dati comunemente usati (testo, MS Excel, XML, CSV, JSON ecc.) con una serie di opzioni e modelli avanzati che possono essere utilizzati per scenari ricorrenti.
Dopo aver scaricato dbForge Data Pump dalla pagina di download di Devart, dovrai installarlo sulla macchina come componente aggiuntivo dello strumento SSMS, come mostrato di seguito:
Esportazione dati
dbForge Data Pump può essere utilizzato all'interno di SSMS per esportare dati da una tabella di database di SQL Server o per visualizzare i dati in 13 tipi di formati supportati tra cui HTML, Testo, MS Excel, MS Excel 2007, MS Access, RTF, PDF, XML, CSV, ODBC, DBF (Foxpro, dBase III, dBase IV, dBase 7), SQL e JSON.
Per esportare i dati da una specifica tabella di SQL Server, attenersi alla seguente procedura:
- Connetti all'istanza di SQL Server tramite SSMS. Da Esplora oggetti, fai clic con il pulsante destro del mouse sul database che contiene la tabella di origine e scegli Esporta dati dal Data Pump sottomenu:
- Nel formato di esportazione finestra, scegliere il formato del file in cui verranno esportati i dati della tabella di origine o caricare un modello salvato in precedenza. Nel nostro esempio, sceglieremo MS Excel 2007. Fare clic su Avanti pulsante per procedere:
- Nella finestra Sorgente, rivedere i dettagli della connessione e selezionare le tabelle che contengono i dati di origine da esportare. Fai clic su Avanti procedere:
- Nelle Opzioni finestra, controllare e impostare le diverse opzioni personalizzabili per la griglia della tabella dei dati esportati. Quindi, fai clic su Avanti procedere:
- Nei formati di dati finestra, sotto le Colonne scheda, seleziona le colonne che verranno esportate ed esamina i loro tipi di dati:Inoltre, nei Formati scheda, imposta il formato dei diversi tipi di dati per le colonne selezionate. Fai clic su Avanti pulsante per procedere:
- Nelle Impostazioni di stampa della pagina finestra, è possibile impostare le diverse opzioni per le pagine dei file esportati ai fini della stampa. Fai clic su Avanti procedere:
- Nelle righe esportate finestra, specificare un intervallo di righe da esportare dalla tabella di origine o scegliere di esportare tutte le righe della tabella. Fai clic su Avanti procedere:
- La Gestione degli errori La finestra fornisce una serie di opzioni che possono essere utilizzate per specificare come elaborare gli errori se si verificano e dove registrare i risultati dell'esecuzione. Fai clic su Salva Modello per salvare le impostazioni come modello da utilizzare in futuro, oppure premere il pulsante Esporta pulsante per avviare il processo di esportazione dei dati, come mostrato di seguito:Durante il processo di esportazione dei dati, Data Pump ti fornirà messaggi informativi che mostrano il numero di record copiati dal tabella attuale, come mostrato di seguito:Quando il processo di esportazione dei dati viene completato correttamente, verrà visualizzato un riepilogo del processo di esportazione. Verranno fornite le opzioni per aprire il file generato o la cartella contenente ed esportare più dati dalla stessa pagina senza la necessità di chiudere e riaprire lo strumento:
Importazione dati
dbForge Data Pump può essere utilizzato all'interno di SSMS per importare dati in una tabella di database di SQL Server. Sono supportati i seguenti 9 formati di dati ampiamente utilizzati:Testo, MS Excel, MS Excel 2007, MS Access, XML, CSV, ODBC, DBF (Foxpro, dBase III, dBase IV, dBase 7) e JSON.
Per importare dati da un foglio Excel in una tabella SQL Server specifica, attenersi alla procedura seguente:
- Connetti all'istanza di SQL Server tramite SSMS. Da Esplora oggetti, fai clic con il pulsante destro del mouse sul database che contiene la tabella del database di destinazione e scegli Importa Dati dal Pompa dati sottomenu:
- Nel File sorgente finestra, scegli il formato del file di origine o semplicemente carica un modello precedentemente salvato per eseguire il processo di importazione. Nel nostro esempio utilizzeremo Microsoft Excel 2007 e faremo clic su Sfoglia pulsante per individuare il foglio Excel. Fai clic su Avanti pulsante per procedere:
- Nella Destinazione finestra, rivedere le informazioni di connessione e specificare se i dati devono essere importati in una nuova tabella o in una tabella esistente dall'elenco fornito. Fai clic su Avanti procedere:
- Nelle Opzioni finestra, è possibile impostare diverse opzioni che specificano la posizione dell'intestazione e dei dati nel file di origine, con la possibilità di visualizzare in anteprima i dati del file di origine prima dell'importazione. Fai clic su Avanti procedere:
- Nei formati di dati finestra, è possibile regolare il formato del tipo di dati per diverse colonne di testo nel file di origine prima di importarlo nella tabella del database. Fai clic su Avanti procedere:
- Nella Mappatura finestra, è possibile mappare le colonne dal file di origine alla tabella del database di destinazione, con la possibilità di visualizzare in anteprima i dati dopo aver eseguito la modifica. Fai clic su Avanti procedere:
- Nelle Modalità finestra, è possibile specificare la modalità di importazione dei dati, ad esempio aggiungere i dati ai dati esistenti nella tabella di destinazione ed eseguire un inserimento in blocco o importare i dati con una singola transazione. Fai clic su Avanti procedere:
- Nell'output finestra, è possibile specificare di generare o salvare lo script di importazione dei dati o procedere immediatamente con il processo di importazione dei dati. Fai clic su Avanti procedere:
- La Gestione degli errori La finestra fornisce una serie di opzioni che possono essere utilizzate per specificare come comportarsi in caso di errori e dove registrare i risultati dell'esecuzione. Fai clic su Salva modello per salvare le impostazioni come modello da utilizzare in futuro, oppure l'Importa pulsante per avviare il processo di importazione dei dati, come mostrato di seguito:
- Quando il processo di importazione è completato correttamente, la procedura guidata visualizzerà un riepilogo per il numero di record importati. Avrai la possibilità di rivedere il file di registro degli errori nel caso in cui si siano verificati degli errori e di importare altri file dalla stessa finestra senza la necessità di chiudere e riaprire lo strumento:
È chiaro dall'esempio precedente che lo strumento dbForge Data Pump ci offre la possibilità di importare ed esportare dati da e verso vari formati di file di dati. La procedura guidata dedicata a questo è semplice da configurare, ricca di diverse opzioni e non richiede sforzi di sviluppo. Merita una prova!