ALINTIDIR!!!
Bir access dosyasını mysql aktarmanın en kolay yolu php nin odbc destegini kullanmaktır.
Access dosyamızı mysql dönüştürdüğümüz zaman daha sonra yapmamız gereken artık bize kalmış durumda. Mysql ile ilgilenen arkadaşlar zaten mysql verilerini nasıl başka bir yere taşıyacaklarını biliyorlardır. Ben bu dökümanda accessle oluşturulmuş bir mdb dosyasını localde nasıl mysql e dönüştürebileceğimizi anlatacağım. Bundan sonrası ise size kalmış.
Herşeyden önce access dosyamızı oluşturalım ve bunun içine biraz veri girelim.
Mdb dosyamızın içinde bilgi adında şöyle bir tablomuz olsun;

numara sayısal deger ad soyad ise metin şeklinde

http://rapidshare.com/files/136266727/Datta.zip
Şimdi bu dosyamızı odbc ye tanıtalım. Bunun için Eger Nt tabanlı bir işletim sistemi kullanıyorsanız Denetim Masası>Yönetimsel araçlar>Veri Kaynakları (ODBC) seçeceksiniz Win98,win95 te Odbc diyte geçiyordu doğru anımsıyorsam.
Burdan önünüze çıkacak pencere aynıdır.




Buradan Kulanıcı DSN den MS Access Database seçilecek. Bunu seçtiğimizde karşımıza yine bir pencere açılacaktır.Pencerenin görünümü şu şekilde olacaktır;



Burada bizim için öncemli olanlar şunlar:
Birincisi "Veri Kaynağının Adı" kısmı buraya yazdığımız kelime daha sonra php ile access dosyamıza erişirken gerekecek. Bundan dolayı buraya anlamlı birşey yazalım mesela "accessdatabase" oldun.
Açıklama kısmını doldurmak zorunda değiliz. Herhangi birşey yazabilir yada hiç yazmayabiliriz. Veritabanı Sekmesinden ise Seç diyerek mdb dosyamızı göstermeliyiz.




Mdb dosyamızıda seçtikten sonra artık Tamam diyebiliriz. Şu an yaptığımız işlemle mdb dosyamızı Odbc olarak tanıtmış olduk. Yani php dosyamızda odbc desteği sayesinde artık bu verilere erişebiliriz.
Artık Kullanıcı DSN kısmında bizim tanımımızda yer almaktadır.




Şimdi gelelim php ile odbc erişimine...
Php nin son versiyonlarında odbc desteği otomatik kurulu halde geliyor. Odbc desteğinin otomatik kurulu olup olmadığını anlamak için php.ini dosyasının içeriğinde extension tanımlarının bulunduğu satıra bakmak gerekir.
;Windows Extensions
satırını bulduğunuzda dosya içinde
;Note that MySQL and ODBC support is now built in, so no dll is needed for it.
Gibi bir açıklama görüyorsanız herhangi birşey yapmanız gerekmiyor. Lâkin böyle bir satır yoksa hemen az aşşağıda odbc .dll gibi bir satır göreceksiniz bu satır önünde bulunan ; (Noktalı virgül) ü kaldırın.Ve Apache yi restart edin.
Artık php ile odbc ye bağlanabiliriz.
Php manuelde gerekli komutların hepsi açıklamalı olarak var biz bunlardan sadece bize gerekli olanlarına değinelim.
Bunlardan birincisi odbc_connect() komutu komutun kullanımı paremetrik olarak şu şekilde
odbc_connect('dns adi','kullanıcı adı','parola')
Dikkat ettiyseniz biz odbc yi tanımlarken herhangi bir kullanıcı adı yada parola yazmadık. Bundan dolayı buraları boş geçecegiz. Ama odbc yi tanıtırken kullanıcı adı ve parola tanımlamak istiyorsanız.Mdb dosyasını seçtiğimiz pencerede bulunan gelişmiş tuşundan kullanıcı adı ve parola belirleyebilirsiniz.Bu fonksiyon bize bağlantı numarasını döndürecektir.
odbc_close('bağlantı numarası')
Açılan bağlantıyı kapamaya yarar.
odbc_exec('bağlantı numarası','sql komutu')
Bir sql cümlecigini göndermeye yarar
odbc_fetch_row('query numarası');
Sql sonucunda gelen verileri çeker.
odbc_result('query numarası','alan sıra numarası yada adı');
Fetch row ile çekilen verilen içerisinden alanları çeker.
Basit bir örnekle soy isimleri gösterirsek


Kod:
<?
$odbclink=odbc_connect('accessdatabase','','');
$result=odbc_do($odbclink,'select * from bilgi');
while(odbc_fetch_row($result)){
echo odbc_result($result,'soyad');
}
odbc_close($odbclink);
?>
Bundan sonra access verilerimizi mysql e taşımak çok zor değil.Aynı tablo yapısı ile bilgi adında bir tabloyu mysql e oluşturun tabloyu oluşturan sqli direk kullanabilirsiniz


Kod:
CREATE TABLE bilgi (
numara int(11),
ad text,
soyad text
);
Sonra işin özü hem mysql bağlanmak hemde odbc ye bağlanmak ve odbc den gelen verileri msyql e aktarmak;


Kod:
<?
$odbclink=odbc_connect('accessdatabase','','');
$mysqllink=mysql_connect('localhost','root','');
mysql_select_db('data');
$result=odbc_do($odbclink,'select * from bilgi');
while(odbc_fetch_row($result)){
mysql_query('insert into bilgi (numara,ad,soyad)
Values("'.odbc_result($result,'numara').'","'.odbc _result($result,'ad').'","'.odbc_result($result,'s oyad').'")');
}
odbc_close($odbclink);
mysql_close($mysqllink);
?>
Bu kodu çalıştırdığımızda biden tüm dataların taşındığını göreceksiniz.
Olay bu kadar...
Karşılaşacağınız bazı sorunlar ve çözümleri şöyle;
Çok fazla veri taşımaya çalıştığınızda bu veri taşıma işlemi sayfanız Aşım süresine uğramasına neden olabilir bunun için set_time_limit fonksiyonunu kullanabilirsiniz kullanımı
set_time_limit('saniye olarak süre') dir
Bir başka çözüm ise odbc den veri çeken sql nizi veriyi sınırlandıracak şekilde ayarlayarak verileri parça parça insert etmektir şöyle ki numara alanını baz alırsak ilk başta belirli bir numara aralığına uyan verileri çektirmek suretiyle verinizi sınırlandırabilirsiniz.
Geliştirmeye yönelik ise bir verinin iki kere girilip girilmediğini kontrol edip sorna veriyi girebilirsiniz.
Benden bu kadar...
ALINTIDIR!!!