Sdílet prostřednictvím


Import dat z Excelu do SQL Serveru nebo Azure SQL Database

platí pro:SQL Serverazure SQL Database

Existuje několik způsobů, jak importovat data z excelových souborů do SQL Serveru nebo do Azure SQL Database. Některé metody umožňují importovat data v jednom kroku přímo ze souborů Excelu; Jiné metody vyžadují, abyste data Excelu před importem vyexportovali jako text (soubor CSV).

Tento článek shrnuje často používané metody a poskytuje odkazy na podrobnější informace. Úplný popis složitých nástrojů a služeb, jako je SSIS nebo Azure Data Factory, je nad rámec tohoto článku. Další informace o řešení, které vás zajímá, najdete na uvedených odkazech.

Seznam metod

Data z Excelu můžete importovat několika způsoby. Abyste mohli některé z těchto nástrojů používat, musíte nainstalovat SQL Server Management Studio (SSMS).

K importu dat z Excelu můžete použít následující nástroje:

Nejprve exportovat do textu (SQL Server a Azure SQL Database) Přímo z Excelu (jenom lokální SQL Server)
Průvodce importem plochých souborů Průvodce importem a exportem SQL Serveru
příkaz BULK INSERT SQL Server Integration Services (SSIS)
nástroj hromadného kopírování (bcp) funkce OPENROWSET
průvodce kopírování (Azure Data Factory)
Azure Data Factory

Pokud chcete importovat více listů z excelového sešitu, obvykle musíte pro každý list spustit některý z těchto nástrojů jednou.

Další informace najdete v tématu omezení a známé problémy při načítání dat do nebo z excelových souborů.

Průvodce importem a exportem

Importujte data přímo z excelových souborů pomocí Průvodce importem a exportem SQL Serveru. Nastavení můžete uložit také jako balíček služby SSIS (SQL Server Integration Services), který můžete později přizpůsobit a znovu použít.

  1. V aplikaci SQL Server Management Studio se připojte k instanci databázového stroje SQL Serveru.

  2. Rozbalte databáze.

  3. Klikněte pravým tlačítkem na databázi.

  4. Vyberte úkoly.

  5. Zvolte Importovat data nebo Exportovat data:

    snímek obrazovky průvodce spuštěním SSMS

Spustí se průvodce:

snímek obrazovky s připojením ke zdroji dat Excelu

Další informace najdete v následujících článcích:

Integrační služby (SSIS)

Pokud znáte službu SQL Server Integration Services (SSIS) a nechcete spustit Průvodce importem a exportem SQL Serveru, můžete místo toho vytvořit balíček SSIS, který používá zdroj aplikace Excel a cíl SQL Serveru v toku dat.

Další informace najdete v následujících článcích:

Pokud se chcete naučit vytvářet balíčky SSIS, přečtěte si kurz Vytvoření balíčku ETL.

snímek obrazovky s komponentami v toku dat

OPENROWSET a propojené servery

Důležitý

Ve službě Azure SQL Database nemůžete importovat přímo z Excelu. Nejprve je nutné exportovat data do textového souboru (CSV).

Následující příklady používají zprostředkovatele JET, protože zprostředkovatel ACE, který je součástí Office, který se připojuje ke zdrojům dat Excelu, je určený pro interaktivní použití na straně klienta.

Distribuované dotazy

Importujte data přímo do SQL Serveru ze souborů Excelu pomocí funkce Transact-SQL OPENROWSET nebo OPENDATASOURCE. Toto použití se nazývá distribuovaný dotaz.

Důležitý

Ve službě Azure SQL Database nemůžete importovat přímo z Excelu. Nejprve je nutné exportovat data do textového souboru (CSV).

Než budete moct spustit distribuovaný dotaz, musíte povolit možnost konfigurace Ad Hoc Distributed Queries serveru, jak je znázorněno v následujícím příkladu. Další informace najdete v tématu Konfigurace serveru: Ad Hoc distribuované dotazy.

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

Následující ukázka kódu používá OPENROWSET k importu dat z excelového Sheet1 listu do nové databázové tabulky.

USE ImportFromExcel;
GO
SELECT * INTO Data_dq
FROM OPENROWSET('Microsoft.JET.OLEDB.4.0',
    'Excel 8.0; Database=C:\Temp\Data.xls', [Sheet1$]);
GO

Tady je stejný příklad s 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

Pokud chcete místo vytvoření nové tabulky přidat importovaná data do existující tabulky, místo syntaxe SELECT ... INTO ... FROM ... použité v předchozích příkladech použijte syntaxi INSERT INTO ... SELECT ... FROM ....

Pokud chcete dotazovat excelová data bez importu, stačí použít standardní syntaxi SELECT ... FROM ....

Další informace o distribuovaných dotazech najdete v následujících článcích:

1 Distribuované dotazy jsou stále podporovány na SQL Serveru, ale dokumentace k této funkci se neaktualizuje.

Propojené servery

Můžete také nakonfigurovat trvalé připojení z SQL Serveru k excelovému souboru jako linked server. Následující příklad naimportuje data z listu Data na existujícím propojeném serveru Aplikace Excel EXCELLINK do nové databázové tabulky SYSTÉMU SQL Server s názvem Data_ls.

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

Propojený server můžete vytvořit z APLIKACE SQL Server Management Studio (SSMS) nebo spuštěním systémové uložené procedury sp_addlinkedserver, jak je znázorněno v následujícím příkladu.

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;

Další informace o odkazovaných serverech najdete v následujících článcích:

Další příklady a informace o odkazovaných serverech a distribuovaných dotazech najdete v následujícím článku:

Požadavky

Pokud chcete použít zbývající metody popsané na této stránce (příkaz BULK INSERT, nástroj bcp nebo Azure Data Factory), musíte nejprve exportovat excelová data do textového souboru.

Uložení excelových dat jako textu

V Excelu vyberte Soubor | Uložit jako a potom jako cílový typ souboru vyberte Text (Tabem oddělený) (*.txt) nebo CSV (Čárkou oddělený) (*.csv).

Pokud chcete exportovat více listů ze sešitu, vyberte každý list a opakujte tento postup. Příkaz Uložit jako exportuje pouze aktivní list.

Spropitné

Nejlepších výsledků dosáhnete pomocí nástrojů pro import dat, uložte listy, které obsahují pouze záhlaví sloupců a řádky dat. Pokud uložená data obsahují názvy stránek, prázdné řádky, poznámky atd., může se při importu dat zobrazit neočekávané výsledky později.

Průvodce importem plochých souborů

Importujte data uložená jako textové soubory krokováním mezi stránkami Průvodce importem plochých souborů.

Jak je popsáno dříve v části Požadavky, musíte data Aplikace Excel exportovat jako text, abyste je mohli importovat pomocí Průvodce importem plochých souborů.

Další informace o Průvodci importem plochých souborů naleznete v tématu Průvodce importem plochých souborů do SQL.

PŘÍKAZ BULK INSERT

BULK INSERT je příkaz Transact-SQL, který můžete spustit ze sady SQL Server Management Studio. Následující příklad načte data z Data.csv souboru s oddělovači do existující databázové tabulky.

Jak je popsáno výše v části Požadavky, musíte data Excelu exportovat jako text, abyste je mohli importovat pomocí BULK INSERT. BULK INSERT nemůže číst excelové soubory přímo. Pomocí příkazu BULK INSERT můžete importovat soubor CSV uložený místně nebo v úložišti objektů blob v Azure.

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

Další informace a příklady pro SQL Server a Azure SQL Database najdete v následujících článcích:

Nástroj pro hromadné kopírování (bcp)

Nástroj bcp se spustí z příkazového řádku. Následující příklad načte data ze souboru s oddělovači Data.csv do existující tabulky databáze Data_bcp.

Jak je popsáno výše v části Požadavky, musíte data Excelu exportovat jako text, abyste je mohli importovat pomocí bcp. Nástroj bcp nemůže přímo číst excelové soubory. Slouží k importu do SQL Serveru nebo služby SQL Database z testovacího souboru (CSV) uloženého do místního úložiště.

Důležitý

Pro textový soubor (CSV) uložený v úložišti objektů blob v Azure použijte BULK INSERT nebo OPENROWSET. Příklad najdete v tématu Použití funkce BULK INSERT nebo OPENROWSET(BULK...) k importu dat do sql Serveru.

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

Další informace o bcpnajdete v následujících článcích:

Průvodce kopírováním (ADF)

Importujte data uložená jako textové soubory tak, že si projdete stránky Průvodce kopírováním služby Azure Data Factory (ADF).

Jak je popsáno výše v části Požadavky, musíte data Excelu exportovat jako text, abyste je mohli importovat pomocí služby Azure Data Factory. Data Factory nemůže číst excelové soubory přímo.

Další informace o Průvodci kopírováním najdete v následujících článcích:

Azure Data Factory

Pokud jste obeznámeni se službou Azure Data Factory a nechcete spustit Průvodce kopírováním, vytvořte kanál s aktivitou kopírování, která kopíruje z textového souboru na SQL Server nebo do služby Azure SQL Database.

Jak je popsáno výše v části Požadavky, musíte data Excelu exportovat jako text, abyste je mohli importovat pomocí služby Azure Data Factory. Data Factory nemůže číst excelové soubory přímo.

Další informace o používání těchto zdrojů a jímek služby Data Factory najdete v následujících článcích:

Pokud se chcete naučit kopírovat data pomocí služby Azure Data Factory, přečtěte si následující články: