Importare dati da Excel a SQL Server o al database SQL di AzureImport data from Excel to SQL Server or Azure SQL Database

Sono disponibili vari modi per importare dati da file di Excel a SQL Server o al database SQL di Azure.There are several ways to import data from Excel files to SQL Server or to Azure SQL Database. Questo articolo contiene un riepilogo di ogni opzione e collegamenti a istruzioni più dettagliate.This article summarizes each of these options and provides links to more detailed instructions.

  • È possibile importare i dati in un unico passaggio da Excel a SQL usando uno degli strumenti seguenti:You can import data in a single step from Excel to SQL by using one of the following tools:
    • Importazione/Esportazione guidata SQL ServerThe SQL Server Import and Export Wizard
    • SQL Server Integration Services (SSIS)SQL Server Integration Services (SSIS)
    • Funzione OPENROWSETThe OPENROWSET function
  • È possibile importare i dati in due passaggi, salvandoli come testo e quindi usando uno degli strumenti seguenti:You can import data in two steps by saving your data as text, and then using one of the following tools:
    • Istruzione BULK INSERTThe BULK INSERT statement
    • BCPBCP
    • Azure Data FactoryAzure Data Factory

Importante

Una descrizione completa di strumenti e servizi complessi come Azure Data Factory o SSIS esula dagli scopi di questa panoramica.A complete description of complex tools and services like SSIS or Azure Data Factory is beyond the scope of this overview. Per altre informazioni sulla soluzione a cui si è interessati, seguire i collegamenti indicati.To learn more about the solution that interests you, follow the links provided for more info.

Importazione/Esportazione guidata SQL ServerSQL Server Import and Export Wizard

È possibile importare i dati direttamente dai file di Excel scorrendo le pagine dell'Importazione/Esportazione guidata SQL Server.Import data directly from Excel files by stepping through the pages of the SQL Server Import and Export Wizard. Facoltativamente, è possibile salvare le impostazioni di importazione/esportazione come pacchetto di SQL Server Integration Services (SSIS) che è possibile personalizzare e riutilizzare.Optionally, save the import/export settings as a SQL Server Integration Services (SSIS) package that you can customize and reuse.

Connettersi a un'origine dati Excel

Per un esempio di come usare la procedura guidata per l'importazione da Excel a SQL Server, vedere Get started with this simple example of the Import and Export Wizard (Iniziare con un semplice esempio dell'Importazione/Esportazione guidata).For an example of using the wizard to import from Excel to SQL Server, see Get started with this simple example of the Import and Export Wizard.

SQL Server Integration Services (SSIS)SQL Server Integration Services (SSIS)

Se si ha familiarità con SSIS e si preferisce non eseguire l'Importazione/Esportazione guidata di SQL Server, creare un pacchetto SSIS che usa Excel come origine e SQL Server come destinazione nel flusso di dati.If you're familiar with SSIS and don't want to run the SQL Server Import and Export Wizard, create an SSIS package that uses the Excel Source and the SQL Server Destination in the data flow.

Componenti del flusso di dati

Per altre informazioni su questi componenti di SSIS, vedere gli argomenti seguenti:For more info about these SSIS components, see the following topics:

Per istruzioni su come creare pacchetti SSIS, vedere l'esercitazione Creazione di un pacchetto ETL.To start learning how to build SSIS packages, see the tutorial How to Create an ETL Package.

OPENROWSET e server collegatiOPENROWSET and linked servers

Nota

Il provider ACE (in precedenza provider Jet) che si connette alle origini dati di Excel è destinato all'uso interattivo sul lato client.The ACE provider (formerly the Jet provider) that connects to Excel data sources is intended for interactive client-side use. Se si usa il provider ACE nel server, in particolare in processi automatizzati o processi in esecuzione in parallelo, si possono ottenere risultati imprevisti.If you use the ACE provider on the server, especially in automated processes or processes running in parallel, you may see unexpected results.

Query distribuiteDistributed queries

Importare i dati direttamente dai file di Excel usando la funzione OPENROWSET o OPENDATASOURCE di Transact-SQL.Import data directly from Excel files by using the Transact-SQL OPENROWSET or OPENDATASOURCE function. Questo utilizzo è noto come query distribuita.This usage is called a distributed query.

Prima di eseguire una query distribuita, è necessario abilitare l'opzione di configurazione del server ad hoc distributed queries, come illustrato nell'esempio seguente.Before you can run a distributed query, you have to enable the ad hoc distributed queries server configuration option, as shown in the following example. Per altre informazioni, vedere Opzione di configurazione del server ad hoc distributed queries.For more info, see ad hoc distributed queries Server Configuration Option.

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO

L'esempio di codice seguente usa OPENROWSET per importare i dati dal foglio di lavoro di Excel Data in una nuova tabella di database.The following code sample uses OPENROWSET to import the data from the Excel Data worksheet into a new database table.

USE ImportFromExcel;
GO
SELECT * INTO Data_dq
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0; Database=D:\Desktop\Data.xlsx', [Data$]);
GO

Ecco lo stesso esempio con OPENDATASOURCE.Here's the same example with OPENDATASOURCE.

USE ImportFromExcel;
GO
SELECT * INTO Data_dq
FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0',
    'Data Source=D:\Desktop\Data.xlsx;Extended Properties=Excel 12.0')...[Data$];
GO

Per aggiungere i dati importati a una tabella esistente invece di creare una nuova tabella, usare la sintassi INSERT INTO ... SELECT ... FROM ... al posto della sintassi SELECT ... INTO ... FROM ... usata negli esempi precedenti.To append the imported data to an existing table instead of creating a new table, use the INSERT INTO ... SELECT ... FROM ... syntax instead of the SELECT ... INTO ... FROM ... syntax used in the preceding examples.

Per eseguire una query sui dati di Excel senza eseguirne l'importazione, usare la sintassi standard SELECT ... FROM ....To query the Excel data without importing it, just use the standard SELECT ... FROM ... syntax.

Per altre informazioni sulle query distribuite, vedere gli argomenti seguenti:For more info about distributed queries, see the following topics:

Server collegatiLinked servers

È anche possibile configurare una connessione permanente al file di Excel come server collegato.You can also configure a persistent connection to the Excel file as a linked server. L'esempio seguente importa i dati dal foglio di lavoro Data nel server collegato di Excel esistente EXCELLINK in una nuova tabella di database denominata Data_ls.The following example imports the data from the Data worksheet on the existing Excel linked server EXCELLINK into a new database table named Data_ls.

USE ImportFromExcel;
GO
SELECT * INTO Data_ls FROM EXCELLINK...[Data$];
GO

È possibile creare un server collegato da SQL Server Management Studio o eseguendo la stored procedure di sistema sp_addlinkedserver, come illustrato nell'esempio seguente.You can create a linked server from SQL Server Management Studio, or by running the system stored procedure sp_addlinkedserver, as shown in the following example.

DECLARE @RC int

DECLARE @server     nvarchar(128)
DECLARE @srvproduct nvarchar(128)
DECLARE @provider   nvarchar(128)
DECLARE @datasrc    nvarchar(4000)
DECLARE @location   nvarchar(4000)
DECLARE @provstr    nvarchar(4000)
DECLARE @catalog    nvarchar(128)

-- Set parameter values
SET @server =     'EXCELLINK'
SET @srvproduct = 'Excel'
SET @provider =   'Microsoft.ACE.OLEDB.12.0'
SET @datasrc =    'D:\Desktop\Data.xlsx'
SET @provstr =    'Excel 12.0'

EXEC @RC = [master].[dbo].[sp_addlinkedserver] @server, @srvproduct, @provider,
@datasrc, @location, @provstr, @catalog

Per altre informazioni sui server collegati, vedere gli argomenti seguenti:For more info about linked servers, see the following topics:

Per altri esempi e informazioni sia sui server collegati che sulle query distribuite, vedere gli argomenti seguenti:For more examples and info about both linked servers and distributed queries, see the following topics:

Prerequisito - Salvare i dati di Excel come testoPrerequisite - Save Excel data as text

Per usare i restanti metodi descritti in questa pagina, ovvero l'istruzione BULK INSERT, lo strumento BCP o Azure Data Factory, è prima di tutto necessario esportare i dati di Excel in un file di testo.To use the rest of the methods described on this page - the BULK INSERT statement, the BCP tool, or Azure Data Factory - first you have to export your Excel data to a text file.

In Excel selezionare File | Salva con nome e quindi selezionare Testo (con valori delimitati da tabulazioni) (*.txt) o CSV (delimitato dal separatore di elenco) (*.csv) come tipo di file di destinazione.In Excel, select File | Save As and then select Text (Tab delimited) (*.txt) or CSV (Comma delimited) (*.csv) as the destination file type.

Suggerimento

Per ottenere risultati ottimali con gli strumenti per l'importazione dei dati, salvare fogli che contengono solo le intestazioni di colonna e le righe di dati.For best results with data importing tools, save sheets that contain only the column headers and the rows of data. Se i dati salvati contengono titoli di pagina, righe vuote, note e così via, possono verificarsi risultati imprevisti in un secondo momento quando si importano i dati.If the saved data contains page titles, blank lines, notes, and so forth, you may see unexpected results later when you import the data.

Comando BULK INSERTBULK INSERT command

BULK INSERT è un comando Transact-SQL che è possibile eseguire da SQL Server Management Studio.BULK INSERT is a Transact-SQL command that you can run from SQL Server Management Studio. L'esempio seguente carica i dati dal file con valori delimitati da virgole Data.csv in una tabella di database esistente.The following example loads the data from the Data.csv comma-delimited file into an existing database table.

USE ImportFromExcel;
GO
BULK INSERT Data_bi FROM 'D:\Desktop\data.csv'
   WITH (
      FIELDTERMINATOR = ',',
      ROWTERMINATOR = '\n'
);
GO

Per altre informazioni, vedere gli argomenti seguenti:For more info, see the following topics:

Strumento BCPBCP tool

BCP è un programma eseguibile dal prompt dei comandi.BCP is a program that you run from the command prompt. L'esempio seguente carica i dati dal file con valori delimitati da virgole Data.csv nella tabella di database Data_bcp esistente.The following example loads the data from the Data.csv comma-delimited file into the existing Data_bcp database table.

bcp.exe ImportFromExcel..Data_bcp in "D:\Desktop\data.csv" -T -c -t ,

Per altre informazioni su BCP, vedere gli argomenti seguenti:For more info about BCP, see the following topics:

Copia guidata (Azure Data Factory)Copy Wizard (Azure Data Factory)

È possibile importare i dati salvati come file di testo scorrendo le pagine della Copia guidata.Import data saved as text files by stepping through the pages of the Copy Wizard.

Per altre informazioni sulla Copia guidata, vedere gli argomenti seguenti:For more info about the Copy Wizard, see the following topics:

Azure Data FactoryAzure Data Factory

Se si ha familiarità con Azure Data Factory e si preferisce non eseguire la Copia guidata, creare una pipeline con un'attività di copia dal file di testo a SQL Server o al database SQL di Azure.If you're familiar with Azure Data Factory and don't want to run the Copy Wizard, create a pipeline with a Copy activity that copies from the text file to SQL Server or to Azure SQL Database.

Per altre informazioni sull'uso di questi sink e origini di Data Factory, vedere gli argomenti seguenti:For more info about using these Data Factory sources and sinks, see the following topics:

Per istruzioni su come copiare dati con Azure Data Factory, vedere gli argomenti seguenti:To start learning how to copy data with Azure data factory, see the following topics:

Passaggi successiviNext steps

Per altre informazioni sulla soluzione a cui si è interessati, seguire i collegamenti indicati.To learn more about the solution that interests you, follow the links provided for more info.