Arkadaşlar bu konumuzda SQL Proc ile excel den sql e SQL nasıl veri aktaracağımızı inceleyeceğiz.
Bir çok konuda oldugu gibi bu konudada bi kaç farklı yöntem uygulanabilir.
Benim ihtiyacım oldudugu bi anda kullandıgım yöntemi sizler ile paylşamak istedim.
OPENROWSET teknigini kullanmak için sql serverinizde ikitane servisin aktif halde olmasaı 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ı yaprıkdan sonra sıra geldi procderemizi yazamaya
CREATE PROC XLS_AKTARIM
AS
DECLARE @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.xlsyolunda 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 birazdaha 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.
çok teşekkürler.yazı çok iyi yazılmış.bana baya yardımcı oldu.paylaşımlarınızın devamını bekliyorum.iyi çalışmalar