|
Data Transformation Services ile Access 'ten SQL Server’a veri aktarma |
|
Gönderiliyor lütfen bekleyin... |
|
|
Bazen Access, Excel,
HTML, bir text dosyası ya da üçüncü parti bir veritabanındaki tabloların
belirli bir kritere uyanlarını SQL Server’a ya da SQL Server’daki tabloların
bir bölümünü başka bir yere aktarmak isteyebilirsiniz. İşte böyle bir durumla
karşı karşıya kalırsanız, SQL Server içerisindeki Data Transformation
Services(DTS) kullanabilirsiniz. Bu makalemizde bir örnek ile konuyu
anlatacağım.
Öncelikle örneğimizi ve ne yapmak istediğimizi kısaca anlamaya
çalışalım. Yapmak istediğimiz şey, Access veri tabanı içerisinde yer alan bir
tabloyu SQL Server’a aktarmak. Bu işlem çok basit olduğu için ben biraz
karmaşıklaştırma ihtiyacı hissettim ve şöyle bir kurgu geliştirdim. Çünkü DTS
paketleri daha çok karmaşık gibi duran durumlarda sıklıkla kullanılır. Ve bu
karmaşık durumların rahatlıkla çözülmesine yardımcı olur. Access
veritabanımızdaki tablonun (tablomuzun ismi “kayitlar”) görüntüsü aşağıdaki
gibidir.
Şekil 1: kayıtlar Tablosu ve
kayıtları
Biz bu tablodan sadece
Urun sütununda içerisinde "kitap" kelimesi geçen kayıtları alacağız ve Sehir
sütunundaki kayıtların hepsini büyük harflerle SQL Server’daki veritabanımıza
kaydedeceğiz. Örneğin ankara olarak değil, ANKARA olarak kaydedilmesini
sağlayacağız.
Öncelikle SQL Server Enterprise Manager’i açalım. Data Transformation
Services’i açarak Local Packages üzerine sağ tıklıyor ve “New Package”
diyelim.
Şekil 2: Yeni
Package paketi oluşturma.
DTS Package sayfasının Connection kısmından Microsoft Access’e
tıklıyoruz. Gelen Connection properties penceresinde yapmamız gereken tek
şey, File name kısmının yanındaki üç noktaya tıklamak ve SQL Server’a transfer
etmek istediğimiz tablonun yer aldığı .mdb dosyasını seçmek ya
da dosya yolunu girmek. Benim hazırlamış olduğum Access veritabanının
adı "veritabanı". Dosyamızı seçtikten sonra; bu sayfada isterseniz New
connection kısmından bağlantının ismini değiştirebilirsiniz. Ancak, biz
herhangi bir değişiklik yapmıyoruz.
Şekil 3: Access ile bağlatı
oluşturma.
Bu Access veritabanı bizim kaynağımız(source) oldu. Şimdi
de göndereceğimiz yeri(destination ) seçiyor ve Connection kısmından
Microsoft OLE DB Provider for SQL Server seçeneğine tıklıyoruz. Eğer ağınızda
birden fazla SQL Server hizmet veriyorsa, bu sayfadaki Server kısmından
verileri hangi SQL Server üzerine kaydedecekseniz onu seçebilirsiniz. Biz
local’de çalıştığımız için Server kısmında herhangi bir değişiklik yapmıyoruz.
Authentication olarak Windows Authenticationu kullanacağız. Database
seçeneğinde kullanacağımız veritabanının seçelim.
Şekil 4: Kullanılacak
veritabanının seçilmesi
Daha sonra DTS Package sayfasındaki Task bölümünden
Transfromation Data Task aracını
seçin. Source olarak Microsoft Access, destination olarak ise SQL Server’a
secin. DTS Package sayfasındaki son görüntünüz aşağıdaki gibi olmalıdır.
Şekil 5: DTS paketinin son
görüntüsü
Daha sonra bu iki veritabanı arasındaki Transform Data
Taskın üzerine sağ tıklayarak Propertiesi seçiyoruz. Gelen bu sayfanın
Source tab sekmesinden SQL query radio buttonunu seçiyor ve aşağıdaki SQL
sorgusunu yazıyoruz (Select * from kayitlar where Urun like ‘%kitap%’)
Şekil 6: SQL Sorgusu
Bu sorguyla Access veritabanındaki “kayitlar” isimli tabloda
yer alan ve “Urun” sütununda “kitap” kelimesi geçen satırlar okunuyor. Buraya
yazmış olduğunuz SQL sorgusunun doğruluğunu test etmek için Parse Query
butonuna tıklayabilirsiniz.
Source sekmesinde başka herhangi bir değişiklik
yapmadan, Destination sekmesine geçiyoruz ve karşımıza Create Destination Table
isimli bir form geliyor. Bu formda isterseniz değişiklikler yapabilirsiniz.
Örneğin, SQL Server’da yeni oluşacak tablonun ismi [New Table] olarak
gösteriliyor. Ben, [New Table] kısmını değiştirerek [accesstenSQLe] ismini
veriyorum. Böylece CSharpnedir isimli databasinin içerisinde oluşacak olan
tablomun adı accesstenSQLe olacaktır.
Şekil 7: Tablo oluşturma.
Transformations tab sekmesine geçiyoruz. Eğer isterseniz
burada Select All seçeneğini seçip işlemi tamamlayabilirsiniz. Ancak
bizim bir diğer amacımız da, Access veritabanımız içindeki tablomuzun “Sehir”
isimli sütununda yer alan kayıtların büyük harflere çevrilerek SQL’e
aktarılmasını sağlamaktı. Bu işlemi gerçekleştirmek için ActiveX Script
yazmamız gerekiyor. Bunun için Transformations tab sekmesinde Delete All
butonuna tıklıyor ve daha sonra New butonuna tıklıyoruz.
Şekil 8:Alanların eşleştirilmesi.
New butonuna tıkladıktan sonra gelen ekrandan ActiveX Scripti
seçiyoruz.Karşımıza aşağıdaki ekran gelecektir.
Şekil 9: Transafer özellikleri
Şimdilik General tab sekmesinde herhangi bir değişiklik
yapmadan, Source Columns ve Destination Columns sekmelerinin ikisinde de
aşağıdaki değişiklikleri yapıyoruz.Burda hangi kolonları kullanacağımızı
seçiyoruz.
Şekil 10: Alanlarda yapılacak
değişiklikler.
Bu değişiklikleri yaptıktan sonra tekrar General sekmesine
geçiyor ve Properties butonuna tıklıyoruz. Karşımıza ActiveX Script
Transformation Properties penceresi geliyor. Burada yapmamız gereken tek şey,
VB Script Language’i kullanarak şehir isimlerini büyük harfe çevirmek.
UpperCase, yani UCase fonksiyonunu kullanarak aşağıdaki değişikliği yapıyoruz.
Şekil 11: ActiveX Script Task a VB Scritt ile kod
yazma
Bu sayfada yer alan Test butonuna tıklayarak yazmış olduğunuz script’in
doğruluğunu test edebilirsiniz.Tamam seçeneğini seçtikten
sonra Transformations Options penceresi karşımıza geliyor.
Şekil 12: Alanların eşleştirlmesi
Local Packages içerisinde CSharpnedir tablo isminde bir package oluşuyor ve
bunun üzerine sağ tıklayıp Execute Package diyoruz.
Şekil 12: DTS paketini
çalıştırmak.
Dts paketinin düzgün açılışıp çalımadığını kontrol etmek için
Csharpnedir veritabanını kontrol edelim.Bu
tabloyu ilk tablomuzla karşılaştırırsanız, sadece Urun sütununda kitap kelimesi
geçen kayıtların transfer edildiğini ve şehir isimlerinin büyük harflere
çevrilmiş olduğunu görebilirsiniz.
Şekil 13: Csharpnedir veritabında Tablonun son hali.
DTS sayesinde sadece Access’ten SQL Server’a değil; Excel’den SQL’e, SQL’den
text dosyasına, SQL’den SQL’e… gibi daha birçok transformation işlemini
gerçekleştirebilirsiniz.
Makalede, daha faydalı olabileceğini düşünerek bol resme yer
vermeye çalıştım. Bu amaçla, csharpnedir.com okuyucularına bir nebzecik olsun
faydalı olabildiysem ne mutlu. Bu uygulamayı geliştirerek çok daha kullanışlı
bir yapı elde edebilirsiniz. Özellikle ActiveX Script fonksiyonlarını
kullanarak birçok kullanışlı script oluşturabilirsiniz. Ayrıca farklı SQL
sorguları kullanarak daha güzel sonuçlar elde edebilirsiniz.
Makale:
Data Transformation Services ile Access 'ten SQL Server’a veri aktarma ADO.NET ve SQL Ahmet Sait Duran
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|