İngilizce dilinde oku

Aracılığıyla paylaş


Excel'den SQL Server'a veya Azure SQL Veritabanı'na veri aktarma

Şunlar için geçerlidir:SQL ServerAzure SQL Veritabanı

Excel dosyalarından SQL Server'a veya Azure SQL Veritabanı'na veri aktarmanın çeşitli yolları vardır. Bazı yöntemler, verileri tek bir adımda doğrudan Excel dosyalarından içeri aktarmanıza olanak sağlar; diğer yöntemler, excel verilerinizi içeri aktarmadan önce metin olarak (CSV dosyası) dışarı aktarmanızı gerektirir.

Bu makale, sık kullanılan yöntemleri özetler ve daha ayrıntılı bilgi için bağlantılar sağlar. SSIS veya Azure Data Factory gibi karmaşık araç ve hizmetlerin eksiksiz bir açıklaması bu makalenin kapsamı dışındadır. İlginizi çeken çözüm hakkında daha fazla bilgi için sağlanan bağlantıları izleyin.

Yöntemlerin listesi

Excel'den verileri içeri aktarmanın çeşitli yolları vardır. Bu araçlardan bazılarını kullanmak için SQL Server Management Studio (SSMS) yüklemeniz gerekir.

Excel'den verileri içeri aktarmak için aşağıdaki araçları kullanabilirsiniz:

Önce metne aktar (SQL Server ve Azure SQL Veritabanı) Doğrudan Excel'den (yalnızca şirket içi SQL Server)
Düz Dosya İçeri Aktarma Sihirbazı SQL Server İçeri ve Dışarı Aktarma Sihirbazı
BULK INSERT deyimi SQL Server Integration Services (SSIS)
Toplu kopyalama aracı (bcp) OPENROWSET işlevi
Kopyalama Sihirbazı (Azure Data Factory)
Azure Data Factory

Excel çalışma kitabından birden çok çalışma sayfasını içeri aktarmak istiyorsanız, bu araçlardan herhangi birini genellikle her sayfa için bir kez çalıştırmanız gerekir.

Daha fazla bilgi için bkz. sınırlamaları ve Excel dosyalarına veya Excel dosyalarından veri yüklemeyle ilgili bilinen sorunlar.

İçeri ve Dışarı Aktarma Sihirbazı

SQL Server İçeri ve Dışarı Aktarma Sihirbazı'nı kullanarak verileri doğrudan Excel dosyalarından içeri aktarın. Ayrıca ayarları daha sonra özelleştirip yeniden kullanabileceğiniz bir SQL Server Integration Services (SSIS) paketi olarak kaydedebilirsiniz.

  1. SQL Server Management Studio'da, SQL Server Veritabanı Altyapısı örneğine bağlanın.

  2. veritabanları genişletin.

  3. Bir veritabanına sağ tıklayın.

  4. Görevleröğesini seçin.

  5. Veri İçe Aktarma veya Veri Dışa Aktarma seçin:

    Başlat sihirbazı SSMS'nin ekran görüntüsü.

Bu işlem sihirbazı başlatır:

Excel veri kaynağına bağlanma ekran görüntüsü.

Daha fazla bilgi için aşağıdaki makalelere bakın:

Integration Services (SSIS)

SQL Server Integration Services (SSIS) hakkında bilgi sahibiyseniz ve SQL Server İçeri ve Dışarı Aktarma Sihirbazı'nı çalıştırmak istemiyorsanız, bunun yerine veri akışında Excel Kaynağını ve SQL Server Hedefini kullanan bir SSIS paketi oluşturabilirsiniz.

Daha fazla bilgi için aşağıdaki makalelere bakın:

SSIS paketleri oluşturmayı öğrenmeye başlamak için etl paketi oluşturma öğreticisine bakın.

Veri akışındaki Bileşenlerin ekran görüntüsü.

OPENROWSET ve bağlı sunucular

Önemli

Azure SQL Veritabanı'nda doğrudan Excel'den içeri aktaramazsınız. Önce verileri bir metin (CSV) dosyasınadışarı aktarmanız gerekir.

Excel veri kaynaklarına bağlanan Office'e dahil edilen ACE sağlayıcısı etkileşimli istemci tarafı kullanımına yönelik olduğundan aşağıdaki örneklerde JET sağlayıcısı kullanılır.

Dağıtılmış sorgular

Transact-SQL OPENROWSET veya OPENDATASOURCE işlevini kullanarak excel dosyalarındaki verileri doğrudan SQL Server'a aktarın. Bu kullanım, dağıtılmış sorguolarak adlandırılır.

Önemli

Azure SQL Veritabanı'nda doğrudan Excel'den içeri aktaramazsınız. Önce verileri bir metin (CSV) dosyasınadışarı aktarmanız gerekir.

Dağıtılmış sorguyu çalıştırabilmeniz için önce aşağıdaki örnekte gösterildiği gibi Ad Hoc Distributed Queries sunucu yapılandırma seçeneğini etkinleştirmeniz gerekir. Daha fazla bilgi için bkz. sunucu yapılandırması : Geçici Dağıtılmış Sorgular.

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

Aşağıdaki kod örneği, Excel Sheet1 çalışma sayfasındaki verileri yeni bir veritabanı tablosuna aktarmak için OPENROWSET kullanır.

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

OPENDATASOURCEile aynı örnek aşağıda verilmiştır.

SQL
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

İçeri aktarılan verileri yeni bir tablo oluşturmak yerine varolan bir tablosuna eklemek için, önceki örneklerde kullanılan SELECT ... INTO ... FROM ... söz dizimi yerine INSERT INTO ... SELECT ... FROM ... söz dizimini kullanın.

Excel verilerini içeri aktarmadan sorgulamak için standart SELECT ... FROM ... söz dizimini kullanmanız gerekir.

Dağıtılmış sorgular hakkında daha fazla bilgi için aşağıdaki makalelere bakın:

1 Dağıtılmış sorgular SQL Server'da hala desteklenir, ancak bu özelliğin belgeleri güncelleştirilmez.

Bağlı sunucular

Sql Server'dan Excel dosyasına kalıcı bir bağlantı bağlı sunucuolarak da yapılandırabilirsiniz. Aşağıdaki örnek, var olan Excel bağlı sunucusu EXCELLINKData çalışma sayfasındaki verileri Data_lsadlı yeni bir SQL Server veritabanı tablosuna aktarır.

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

Sql Server Management Studio'dan (SSMS) veya aşağıdaki örnekte gösterildiği gibi sp_addlinkedserversistem saklı yordamını çalıştırarak bağlantılı sunucu oluşturabilirsiniz.

SQL
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;

Bağlı sunucular hakkında daha fazla bilgi için aşağıdaki makalelere bakın:

Hem bağlı sunucular hem de dağıtılmış sorgular hakkında daha fazla örnek ve bilgi için aşağıdaki makaleye bakın:

Önkoşullar

Bu sayfada açıklanan yöntemlerin geri kalanını (BULK INSERT deyimi, bcp aracı veya Azure Data Factory) kullanmak için önce Excel verilerinizi bir metin dosyasına aktarmanız gerekir.

Excel verilerini metin olarak kaydetme

Excel'de Dosya | Farklı Kaydet seçeneğini seçin ve ardından hedef dosya türü olarak Metin (Sekmeyle ayrılmış) (*.txt) veya CSV (Virgülle ayrılmış) (*.csv) seçin.

Çalışma kitabından birden çok çalışma sayfasını dışarı aktarmak istiyorsanız, her sayfayı seçin ve bu yordamı yineleyin. Farklı Kaydet komutu yalnızca etkin sayfayı dışarı aktarır.

İpucu

Veri içeri aktarma araçlarıyla ilgili en iyi sonuçları elde etme amacıyla, yalnızca sütun üst bilgilerini ve veri satırlarını içeren sayfaları kaydedin. Kaydedilen veriler sayfa başlıkları, boş satırlar, notlar vb. içeriyorsa, daha sonra verileri içeri aktardığınızda beklenmeyen sonuçlar görebilirsiniz.

Düz Dosya İçe Aktarma Sihirbazı

Düz Dosya İçeri Aktarma Sihirbazı'nın sayfalarında ilerleyerek metin dosyası olarak kaydedilen verileri içeri aktarın.

Önkoşullar bölümünde daha önce açıklandığı gibi, Düz Dosya İçe Aktarma Sihirbazı'nı kullanarak içe aktarma işlemine başlamadan önce Excel verilerinizi metin olarak dışa aktarmanız gerekir.

Düz Dosyayı İçeri Aktarma Sihirbazı hakkında daha fazla bilgi için bkz. Düz Dosyayı SQL'e Aktarma Sihirbazı.

BULK INSERT komutu

BULK INSERT, SQL Server Management Studio'dan çalıştırabileceğiniz bir Transact-SQL komutudur. Aşağıdaki örnek, virgülle ayrılmış Data.csv dosyasındaki verileri var olan bir veritabanı tablosuna yükler.

daha önce Önkoşullar bölümünde açıklandığı gibi, excel verilerinizi içeri aktarmak için BULK INSERT kullanabilmek için önce metin olarak dışarı aktarmanız gerekir. BULK INSERT Excel dosyalarını doğrudan okuyamıyor. BULK INSERT komutuyla, yerel olarak veya Azure Blob depolamada depolanan bir CSV dosyasını içeri aktarabilirsiniz.

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

SQL Server ve Azure SQL Veritabanı hakkında daha fazla bilgi ve örnek için aşağıdaki makalelere bakın:

Toplu kopyalama aracı (bcp)

bcp aracı komut isteminden çalıştırılır. Aşağıdaki örnek, virgülle ayrılmış Data.csv dosyasındaki verileri mevcut Data_bcp veritabanı tablosuna yükler.

Önkoşullar bölümünde daha önce açıklandığı gibi, Excel verilerinizi metin olarak dışarı aktardıktan sonra bcp kullanarak içeri aktarabilirsiniz. bcp aracı Excel dosyalarını doğrudan okuyamaz. Yerel depolama alanına kaydedilmiş bir test (CSV) dosyasından SQL Server veya SQL Veritabanı'na aktarmak için kullanın.

Önemli

Azure Blob depolamada depolanan bir metin (CSV) dosyası için BULK INSERT veya OPENROWSETkullanın. Örnek için bkz. VERILERI SQL Serveriçeri aktarmak için BULK INSERT veya OPENROWSET(BULK...) kullanma.

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

vehakkında daha fazla bilgi için aşağıdaki makalelere bakın:

Kopyalama Sihirbazı (ADF)

Azure Data Factory (ADF) Kopyalama Sihirbazı'nın sayfalarında ilerleyerek metin dosyası olarak kaydedilen verileri içeri aktarın.

Daha önce Önkoşullar bölümünde açıklandığı gibi, Azure Data Factory'yi kullanarak içeri aktarmadan önce Excel verilerinizi metin olarak dışarı aktarmanız gerekir. Data Factory, Excel dosyalarını doğrudan okuyamaz.

Kopyalama Sihirbazı hakkında daha fazla bilgi için aşağıdaki makalelere bakın:

Azure Data Factory

Azure Data Factory hakkında bilgi sahibiyseniz ve Kopyalama Sihirbazı'nı çalıştırmak istemiyorsanız, metin dosyasından SQL Server'a veya Azure SQL Veritabanı'na kopyalayan kopyalama etkinliğine sahip bir işlem hattı oluşturun.

Daha önce Önkoşullar bölümünde açıklandığı gibi, Azure Data Factory'yi kullanarak içeri aktarmadan önce Excel verilerinizi metin olarak dışarı aktarmanız gerekir. Data Factory, Excel dosyalarını doğrudan okuyamaz.

Bu Data Factory kaynaklarını ve havuzlarını kullanma hakkında daha fazla bilgi için aşağıdaki makalelere bakın:

Azure Data Factory ile veri kopyalamayı öğrenmeye başlamak için aşağıdaki makalelere bakın: