Importera data från Excel till SQL Server eller Azure SQL Database
gäller för:SQL Server
Azure SQL Database
Det finns flera sätt att importera data från Excel-filer till SQL Server eller till Azure SQL Database. Med vissa metoder kan du importera data i ett enda steg direkt från Excel-filer. Andra metoder kräver att du exporterar dina Excel-data som text (CSV-fil) innan du kan importera dem.
Den här artikeln sammanfattar de metoder som används ofta och innehåller länkar för mer detaljerad information. En fullständig beskrivning av komplexa verktyg och tjänster som SSIS eller Azure Data Factory ligger utanför den här artikelns omfång. Mer information om lösningen som intresserar dig finns i länkarna.
Lista över metoder
Det finns flera sätt att importera data från Excel. Du måste installera SQL Server Management Studio (SSMS) för att kunna använda några av dessa verktyg.
Du kan använda följande verktyg för att importera data från Excel:
Exportera till text först (SQL Server och Azure SQL Database) | Direkt från Excel (endast lokalt SQL Server) |
---|---|
Guider för import av flatfiler | SQL Server-guiden för import och export |
BULK INSERT--instruktion | SQL Server Integration Services (SSIS) |
Masskopieringsverktyg (bcp) | OPENROWSET-funktionen |
Kopieringsguide (Azure Data Factory) | |
Azure Data Factory |
Om du vill importera flera kalkylblad från en Excel-arbetsbok måste du vanligtvis köra något av dessa verktyg en gång för varje blad.
Mer information finns i begränsningar och kända problem med att läsa in data till eller från Excel-filer.
Guiden Importera och exportera
Importera data direkt från Excel-filer med hjälp av guiden Importera och exportera SQL Server. Du kan också spara inställningarna som ett SQL Server Integration Services-paket (SSIS) som du kan anpassa och återanvända senare.
I SQL Server Management Studio ansluter du till en instans av SQL Server Database Engine.
Expandera Databaser.
Högerklicka på en databas.
Välj Uppgifter.
Välj att Importera data eller Exportera data:
Detta startar guiden:
Mer information finns i följande artiklar:
- Starta guiden för import och export av SQL Server
- Kom igång med det här enkla exemplet på guiden Importera och exportera
Integration Services (SSIS)
Om du är bekant med SQL Server Integration Services (SSIS) och inte vill köra guiden IMPORTERA och exportera SQL Server kan du skapa ett SSIS-paket som använder Excel-källan och SQL Server-målet i dataflödet i stället.
Mer information finns i följande artiklar:
För att börja lära dig hur du bygger SSIS-paket, se självstudien How to Create an ETL Package.
OPENROWSET och länkade servrar
Viktig
I Azure SQL Database kan du inte importera direkt från Excel. Du måste först exportera data till en textfil (CSV).
I följande exempel används JET-providern eftersom ACE-providern som ingår i Office och som ansluter till Excel-datakällor är avsedd för interaktiv användning på klientsidan.
Distribuerade frågor
Importera data direkt till SQL Server från Excel-filer med hjälp av funktionen Transact-SQL OPENROWSET
eller OPENDATASOURCE
. Den här användningen kallas för en distribuerad fråga.
Viktig
I Azure SQL Database kan du inte importera direkt från Excel. Du måste först exportera data till en textfil (CSV).
Innan du kan köra en distribuerad fråga måste du aktivera konfigurationsalternativet Ad Hoc Distributed Queries
server, som du ser i följande exempel. Mer information finns i Server-konfiguration: Ad Hoc-distribuerade frågor.
sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO
I följande kodexempel används OPENROWSET
för att importera data från Excel-Sheet1
kalkylbladet till en ny databastabell.
USE ImportFromExcel;
GO
SELECT * INTO Data_dq
FROM OPENROWSET('Microsoft.JET.OLEDB.4.0',
'Excel 8.0; Database=C:\Temp\Data.xls', [Sheet1$]);
GO
Här är samma exempel med OPENDATASOURCE
.
USE ImportFromExcel;
GO
SELECT * INTO Data_dq
FROM OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',
'Data Source=C:\Temp\Data.xls;Extended Properties=Excel 8.0')...[Sheet1$];
GO
Om du vill lägga till importerade data i en befintlig tabell i stället för att skapa en ny tabell använder du syntaxen INSERT INTO ... SELECT ... FROM ...
i stället för den SELECT ... INTO ... FROM ...
syntax som används i föregående exempel.
Om du vill köra frågor mot Excel-data utan att importera dem använder du bara standardsyntaxen för SELECT ... FROM ...
.
Mer information om distribuerade frågor finns i följande artiklar:
1 Distribuerade frågor stöds fortfarande i SQL Server, men dokumentationen för den här funktionen uppdateras inte.
Länkade servrar
Du kan också konfigurera en beständig anslutning från SQL Server till Excel-filen som en länkad server. I följande exempel importeras data från kalkylbladet Data
på den befintliga Länkade Excel-servern EXCELLINK
till en ny SQL Server-databastabell med namnet Data_ls
.
USE ImportFromExcel;
GO
SELECT * INTO Data_ls FROM EXCELLINK...[Data$];
GO
Du kan skapa en länkad server från SQL Server Management Studio (SSMS) eller genom att köra den system lagrade proceduren sp_addlinkedserver
, som du ser i följande exempel.
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.JET.OLEDB.4.0';
SET @datasrc = 'C:\Temp\Data.xls';
SET @provstr = 'Excel 8.0';
EXEC @RC = [master].[dbo].[sp_addlinkedserver] @server,
@srvproduct,
@provider,
@datasrc,
@location,
@provstr,
@catalog;
Mer information om länkade servrar finns i följande artiklar:
Fler exempel och information om både länkade servrar och distribuerade frågor finns i följande artikel:
Förutsättningar
Om du vill använda resten av metoderna som beskrivs på den här sidan (instruktionen BULK INSERT
, bcp eller Azure Data Factory) måste du först exportera dina Excel-data till en textfil.
Spara Excel-data som text
I Excel väljer du Fil | Spara som och välj sedan text (tabbavgränsad) (*.txt) eller CSV (kommaavgränsad) (*.csv) som målfiltyp.
Om du vill exportera flera kalkylblad från arbetsboken väljer du varje blad och upprepar sedan den här proceduren. Kommandot Spara som exporterar endast det aktiva bladet.
Tips
För bästa resultat med dataimportverktyg sparar du blad som endast innehåller kolumnrubrikerna och dataraderna. Om de sparade data innehåller sidrubriker, tomma rader, anteckningar och så vidare kan du se oväntade resultat senare när du importerar data.
Guida för import av flatfiler
Importera data som sparats som textfiler genom att gå igenom sidorna i Importera flatfil-guiden.
Som du beskrev tidigare i avsnittet Krav måste du exportera dina Excel-data som text innan du kan använda guiden Importera flat fil för att importera dem.
Mer information om guiden Importera flat fil finns i Importera flat fil till SQL-guiden.
BULK INSERT-kommando
BULK INSERT
är ett Transact-SQL kommando som du kan köra från SQL Server Management Studio. I följande exempel läses data från den Data.csv
kommaavgränsade filen in i en befintlig databastabell.
Som du beskrev tidigare i avsnittet Krav måste du exportera dina Excel-data som text innan du kan använda BULK INSERT
för att importera dem.
BULK INSERT
kan inte läsa Excel-filer direkt. Med kommandot BULK INSERT
kan du importera en CSV-fil som lagras lokalt eller i Azure Blob Storage.
USE ImportFromExcel;
GO
BULK INSERT Data_bi FROM 'C:\Temp\data.csv'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);
GO
Mer information och exempel för SQL Server och Azure SQL Database finns i följande artiklar:
- Använd BULK INSERT eller OPENROWSET(BULK...) för att importera data till SQL Server-
- BULK INSERT (Transact-SQL)
Masskopieringsverktyget (bcp)
Verktyget bcp körs från kommandotolken. I följande exempel läses data från den Data.csv
kommaavgränsade filen in i den befintliga Data_bcp
databastabellen.
Som du beskrev tidigare i avsnittet Förutsättningar måste du exportera dina Excel-data som text innan du kan använda bcp för att importera dem. Verktyget bcp kan inte läsa Excel-filer direkt. Använd för att importera till SQL Server eller SQL Database från en testfil (CSV) som sparats till lokal lagring.
Viktig
För en textfil (CSV) som lagras i Azure Blob Storage använder du BULK INSERT
eller OPENROWSET
. Ett exempel finns i Använda BULK INSERT eller OPENROWSET(BULK...) för att importera data till SQL Server.
bcp.exe ImportFromExcel..Data_bcp in "C:\Temp\data.csv" -T -c -t ,
Mer information om bcpfinns i följande artiklar:
- Importera och exportera massdata med bcp (SQL Server)
- bcp Utility
- Förbereda data för massexport eller import
Kopieringsassistent (ADF)
Importera data som sparats som textfiler genom att steg för steg gå igenom sidorna i Azure Data Factory Kopieringsassistent (ADF).
Som du beskrev tidigare i avsnittet Krav måste du exportera dina Excel-data som text innan du kan använda Azure Data Factory för att importera dem. Data Factory kan inte läsa Excel-filer direkt.
Mer information om kopieringsguiden finns i följande artiklar:
- Kopieringsguiden för Data Factory
- Självstudie: Skapa en pipeline med Copy Activity med hjälp av Data Factory Copy Wizard.
Azure Data Factory
Om du är bekant med Azure Data Factory och inte vill köra kopieringsguiden skapar du en pipeline med en kopieringsaktivitet som kopierar från textfilen till SQL Server eller Till Azure SQL Database.
Som du beskrev tidigare i avsnittet Krav måste du exportera dina Excel-data som text innan du kan använda Azure Data Factory för att importera dem. Data Factory kan inte läsa Excel-filer direkt.
Mer information om hur du använder dessa Data Factory-källor och -mottagare finns i följande artiklar:
Information om hur du kopierar data med Azure Data Factory finns i följande artiklar:
- Flytta data med hjälp av Copy Activity
- Självstudie: Skapa en pipeline med kopieringsaktivitet med azure-portalen