Al momento sei offline in attesa che la connessione Internet venga ristabilita

Come importare dati da Excel a SQL Server

Extended support for SQL Server 2005 ends on April 12, 2016

If you are still running SQL Server 2005 after April 12, 2016, you will no longer receive security updates and technical support. We recommend upgrading to SQL Server 2014 and Azure SQL Database to achieve breakthrough performance, maintain security and compliance, and optimize your data platform infrastructure. Learn more about the options for upgrading from SQL Server 2005 to a supported version here.

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 321686
Sommario
In questo articolo viene illustrato come importare dati da fogli di lavoro Microsoft Excel in database di Microsoft SQL Server utilizzando vari metodi.

back to the top

Descrizione della tecnica

Gli esempi di questo articolo importano i dati di Excel utilizzando:
  • SQL Server Data Transformation Services (DTS)
  • Microsoft SQL Server 2005 Integration Services (SSIS)
  • Server SQL Server collegato
  • Query distribuite di SQL Server
  • ActiveX Data Objects (ADO) e il Provider Microsoft OLE DB per SQL Server
  • ADO e il Provider Microsoft OLE DB per Jet 4.0
back to the top

Requisiti

Nell'elenco seguente vengono indicati l'hardware consigliati, software, infrastruttura di rete e i service pack necessari:
  • Disponibile l'istanza di Microsoft SQL Server 7.0 o Microsoft SQL Server 2000 o Microsoft SQL Server 2005
  • Microsoft Visual Basic 6.0 per gli esempi di ADO che utilizzano Visual Basic
Parti di questo articolo si presuppongono che abbia familiarità con i seguenti argomenti:
  • Data Transformation Services
  • I server collegati e le query distribuite
  • Sviluppo di ADO in Visual Basic
back to the top

Esempi

Importazione e Append

Le istruzioni SQL di esempio utilizzati in questo articolo vengono illustrate le query Create Table che importano dati di Excel in una nuova tabella di SQL Server utilizzando l'istruzione SELECT...IN CORSO...DALLA sintassi. È possibile convertire queste istruzioni per query di Accodamento utilizzando INSERT INTO...SELEZIONA...DALLA sintassi mentre si continua a fare riferimento gli oggetti di origine e di destinazione, come illustrato in questi esempi di codice.

back to the top

Utilizzo DTS o SSIS

È possibile utilizzare l'importazione guidata di SQL Server Data Transformation Services (DTS) o il SQL Server importazione / esportazione guidata per importare dati di Excel in tabelle di SQL Server. Quando si esegue la procedura guidata e selezionando le tabelle di origine di Excel, tenere presente che i nomi degli oggetti di Excel vengono accodate al simbolo del dollaro ($) rappresentano i fogli di lavoro (ad esempio, Sheet1$), e che i nomi degli oggetti normale senza il simbolo del dollaro rappresentano Excel intervalli denominati.

back to the top

Utilizzare un Server collegato

Per semplificare la query, è possibile configurare una cartella di lavoro di Excel come server collegato in SQL Server.Per ulteriori informazioni, fare clic sul numero dell'articolo per visualizzare l'articolo della Microsoft Knowledge Base:
306397 HOWTO: Utilizzo Excel con SQL Server server collegati e query distribuite
Il codice riportato di seguito Importa i dati dal foglio di lavoro i clienti nel server collegato Excel "EXCELLINK" in una nuova tabella di SQL Server denominato XLImport1:
SELECT * INTO XLImport1 FROM EXCELLINK...[Customers$]				
È inoltre possibile eseguire la query sull'origine in modalità passthrough utilizzando OPENQUERY come segue:
SELECT * INTO XLImport2 FROM OPENQUERY(EXCELLINK,    'SELECT * FROM [Customers$]')				
back to the top

Utilizzare le query distribuite

Se non si desidera configurare una connessione permanente per la cartella di lavoro di Excel come un server collegato, è possibile importare i dati per uno scopo specifico utilizzando il OPENDATASOURCE o la funzione OPENROWSET. Gli esempi di codice riportato di seguito anche di importare i dati dal foglio di lavoro Excel clienti in nuove tabelle di SQL Server:
SELECT * INTO XLImport3 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=C:\test\xltest.xls;Extended Properties=Excel 8.0')...[Customers$]SELECT * INTO XLImport4 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\test\xltest.xls', [Customers$])SELECT * INTO XLImport5 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\test\xltest.xls', 'SELECT * FROM [Customers$]')				
back to the top

Utilizzo di ADO e SQLOLEDB

Quando si è connessi a SQL Server in un'applicazione ADO utilizzando Microsoft OLE DB per SQL Server (SQLOLEDB), è possibile utilizzare la stessa sintassi "query distribuite" dal Utilizzo delle query distribuite sezione per importare dati di Excel in SQL Server.

Nell'esempio di codice Visual Basic 6.0 è necessario aggiungere un riferimento a Microsoft ActiveX Data Objects (ADO). In questo esempio di codice viene inoltre illustrato come utilizzare OPENDATASOURCE e OPENROWSET tramite una connessione di SQLOLEDB.
    Dim cn As ADODB.Connection    Dim strSQL As String    Dim lngRecsAff As Long    Set cn = New ADODB.Connection    cn.Open "Provider=SQLOLEDB;Data Source=<server>;" & _        "Initial Catalog=<database>;User ID=<user>;Password=<password>"    'Import by using OPENDATASOURCE.    strSQL = "SELECT * INTO XLImport6 FROM " & _        "OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _        "'Data Source=C:\test\xltest.xls;" & _        "Extended Properties=Excel 8.0')...[Customers$]"    Debug.Print strSQL    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords    Debug.Print "Records affected: " & lngRecsAff    'Import by using OPENROWSET and object name.    strSQL = "SELECT * INTO XLImport7 FROM " & _        "OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _        "'Excel 8.0;Database=C:\test\xltest.xls', " & _        "[Customers$])"    Debug.Print strSQL    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords    Debug.Print "Records affected: " & lngRecsAff    'Import by using OPENROWSET and SELECT query.    strSQL = "SELECT * INTO XLImport8 FROM " & _        "OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _        "'Excel 8.0;Database=C:\test\xltest.xls', " & _        "'SELECT * FROM [Customers$]')"    Debug.Print strSQL    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords    Debug.Print "Records affected: " & lngRecsAff    cn.Close    Set cn = Nothing				
back to the top

Utilizzo di ADO e il Provider Jet

L'esempio nella sezione precedente utilizza ADO con il Provider SQLOLEDB per connettersi alla destinazione dell'importazione da Excel a SQL. È anche possibile utilizzare il Provider OLE DB per Jet 4.0 per la connessione all'origine di Excel.

Il motore di database Jet può fare riferimento a database esterni nelle istruzioni SQL utilizzando una sintassi speciale che dispone di tre diversi formati:
  • [Percorso completo del database di Microsoft Access].[Nome della tabella]
  • [Nome ISAM;Stringa di connessione ISAM].[Nome della tabella]
  • [ODBC;Stringa di connessione ODBC].[Nome della tabella]
In questa sezione utilizza il terzo formato per creare una connessione ODBC al database di SQL Server di destinazione. È possibile utilizzare un nome di origine dati ODBC (DSN) o una stringa di connessione senza DSN:
DSN:    [odbc;DSN=<DSN name>;UID=<user>;PWD=<password>]DSN-less:   [odbc;Driver={SQL Server};Server=<server>;Database=<database>;       UID=<user>;PWD=<password>]				
Nell'esempio di codice Visual Basic 6.0 è necessario aggiungere un riferimento di progetto ad ADO. In questo esempio di codice viene illustrato come importare dati di Excel a SQL Server tramite una connessione ADO utilizzando il Provider Jet 4.0.
    Dim cn As ADODB.Connection    Dim strSQL As String    Dim lngRecsAff As Long    Set cn = New ADODB.Connection    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _        "Data Source=C:\test\xltestt.xls;" & _        "Extended Properties=Excel 8.0"        'Import by using Jet Provider.    strSQL = "SELECT * INTO [odbc;Driver={SQL Server};" & _        "Server=<server>;Database=<database>;" & _        "UID=<user>;PWD=<password>].XLImport9 " & _        "FROM [Customers$]"    Debug.Print strSQL    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords    Debug.Print "Records affected: " & lngRecsAff            cn.Close    Set cn = Nothing				
È inoltre possibile utilizzare questa sintassi, il Provider Jet supporta, per importare dati di Excel in altri database di Microsoft Access, un database di accesso sequenziale indicizzato (ISAM) del metodo ("desktop") o un database ODBC.

back to the top

Risoluzione dei problemi

  • Tenere presente che i nomi degli oggetti di Excel vengono accodate al simbolo del dollaro ($) rappresentano i fogli di lavoro (ad esempio, Sheet1$) e che i nomi degli oggetti semplice rappresentare intervalli denominati di Excel.
  • In alcune circostanze, soprattutto quando è possibile designare l'origine dati di Excel utilizzando il nome della tabella anziché una query di selezione, le colonne della tabella di SQL Server di destinazione sono organizzate in ordine alfabetico.Per ulteriori informazioni su questo problema con il Provider Jet, fare clic sul numero dell'articolo per visualizzare l'articolo della Microsoft Knowledge Base:
    299484 PRB: Colonne vengono ordinate alfabeticamente quando si utilizza ADOX per recuperare le colonne della tabella di Access
  • Quando il Provider Jet determina che una colonna di Excel contiene dati numerici e testo misto, il Provider Jet consente di selezionare il tipo di dati "maggioranza" e restituisce valori non corrispondenti come valori null.Per ulteriori informazioni su come ovviare a questo problema, fare clic sul numero dell'articolo per visualizzare l'articolo della Microsoft Knowledge Base:
    194124 PRB: Excel restituiti valori NULL tramite DAO OpenRecordset
back to the top
Riferimenti
Per ulteriori informazioni su come utilizzare Excel come origine dati, fare clic sul numero dell'articolo per visualizzare l'articolo della Microsoft Knowledge Base:
257819 HOWTO: Utilizzare ADO con dati di Excel da Visual Basic o VBA
Per ulteriori informazioni su come trasferire i dati in Excel, fare clic sui numeri degli articoli della Microsoft Knowledge Base:
295646 HOWTO: Trasferimento di dati dall'origine dati ADO in Excel con ADO
247412 INFO: Metodi per il trasferimento di dati in Excel da Visual Basic
246335 HOWTO: Trasferimento di dati da un Recordset ADO a Excel con automazione
319951 Procedura: Trasferire dati in Excel utilizzando SQL Server Data Transformation Services
306125 Procedura: Importare dati da SQL Server in Microsoft Excel
back to the top
jet sqloledb dts di sql ado di Excel

Proprietà

ID articolo: 321686 - Ultima revisione: 01/03/2015 07:23:00 - Revisione: 10.0

Microsoft Excel 2000 Standard Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 64-bit Edition, Microsoft SQL Server 7.0 Standard Edition, Microsoft Excel 2002 Standard Edition, Microsoft Excel 97 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbhowtomaster kbjet kbmt KB321686 KbMtit
Feedback