SQL Procedure ile Excel den Sql e Aktarımı

Arkadaşlar bu makalemizde SQL Proc ile excel den sql e SQL veri aktarımını incelicez.

Bir çok konuda oldugu gibi bu konuda da bi kaç farklı yöntem uygulanabilir.
Benim ihtiyacım olduduğunda kullandığım yöntemi sizinle paylaşmak istedim.

OPENROWSET teknigini kullanmak için sql serverinizde ikitane servisin aktif halde olması gerekiyor bunlar 'show advanced options' ve 'Ad Hoc Distributed Queries' servisleridir.

Aşagıda gördüğünüz komutları sql çalıştırırak yada Menüden SQL SERVER 2005/Configration Tools altından resimde gödüğünüz gibi tik işaretli olması gerekiyor.



sp_configure 'show advanced options', 1
reconfigure
go
sp_configure 'Ad Hoc Distributed Queries', 1
reconfigure

Ayarlarımızı yaptıktan sonra sıra geldi proceduremizi yazamaya.

CREATE PROC XLS_AKTARIM
ASDECLARE @KOMUT NVARCHAR(500)
SET @KOMUT='SELECT * INTO Sayfa1$ FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'',''Excel 8.0;Database=C:\test.xls'', [Sayfa1$])'
EXEC( @KOMUT)

Sonuç olarak açıklamamız gerekirse ;
OPENROWSET yöntemini kullanarak Microsoft.Jet.OLEDB.4.0 araçılıgıyla C:\test.xls yolunda ki excele bağlandık ve sanki tabloymuş gibi Sayfa1 deki verileri okuduk.
Select Into ile Sayfa1$ isminde bir tablo oluşturup içine aktardık.

Burda;
Yöntemimiz: OPENROWSET
Sağlayıcımız :Microsoft.Jet.OLEDB.4.0 (Diğer versiyonlar için değişebilir ben office 2003 kullandım.)
Excel versiyonu: Excel 8.0 (Diğer versiyonlar için değişir uygun olanına bakın)
Kaynak Sayfa : [Sayfa1$] (Diğer sayfalar için [Sayfa2$]... olarak değişir)
Hedef Oluşacak Tablo : Sayfa1$ (Siz istediğiniz ismi verebilirsiniz. Ancak veritabanında bu isim varsa zaten kullanımda diye hata verecektir.)

Siz bunu biraz daha geliştirip excel yolunu ve sayfa isimlerini parametre olarak yollayıp daha kullanışlı bir hale getirebilirsiniz.
Konunun sade kalabilmesi için ben o kısmına girmedim.

Umarım faydalı olmuştur.

2 yorum

Command(s) completed successfully. yazıyor ama yeni bir veri tabnı eklenmiş görünmüyor

Cevapla

Kendinize göre değişiklik yaptıysanız, değişiklikleri kontrol etmenizi tavsiye ederim.
Bende tekrar kodları en kısa zamanda kontrol edicem...

Cevapla

Yorum Gönder