Database
Sql nedir ne işe yarar database bilgileri access asp database mssql mysql
Bigdump Yöntemiyle Veritabanı Yüklemek
9 Oca
Bigdump betiği büyük çaplı veritabanı yedeklerinizi yeniden veritabanına
yüklemenize yardım eder. Normal bir yükleme işleminde (büyük bir dosyadan
bahsediyoruz) veritabanında yüzlerce sorguyu çalıştırmak zaman alacağı için
“time limit exceeded” şeklinde bir hata alırsınız ve işleminiz yarıda kalır.
Bahsettiğimiz tek bir php dosyasından oluşan betik sayesinde ise belirli bir
satır sayısı belirliyorsunuz ve her defasında kaldığı yerden devam ederek
belirttiğiniz kadar satırı veritabanında çalıştırıyor. Bu işlemi yaparken
sayfayı otomatik olarak tekrar tekrar yüklüyor. Tabi sayfanın sürekli tekrar
yüklenmesi bir süre sonra”permission denied” hatası almanıza sebep olur. Ama
buna da çözüm getirilmiş ve betiğe dahil edilen bir ayarla her işlemden sonra
sunucuyu dinlendirmek için ne kadar bekleyeceğini belirtme fırsatı verilmiş.
Betiği indirmek için Tılayınız Kullanma talimatı beni oku dosyasındadır
Bigdump Betiğinin Kullanımı
Bu betiği kullanmak gerçekten çok kolay. Öncelikle bigdump.php dosyasını
veritabanı yedeğinizle aynı dizine koyun. Veritabanı yedeğiniz bir zip dosyası
veya normal bir text dosyası(genelde .sql uzantılı) olabilir. Betik dosyanızı
dizine yükledikten sonra notepad gibi bir düzenleyici ile betiği açın ve şu
satırları bulun.
// Database configuration
$db_server = “localhost”; //Sunucu ki büyük ihtimalle böyle kalır
$db_name = “db_ismi”; //Veritabanı ismi
$db_username = “db_kullanici”; //Veritabanı kullanıcı adı
$db_password = “sifre”; //Veritabanı şifresi
// Other Settings
$filename = “dosya.sql”; //Yedek dosyasının ismi
$linespersession = 500; // Her seferde sorgulanacak satır sayısı
$delaypersession = 0; // Her tekrardan önce milisaniye cinsinden bekleme süresi
(2000=2saniye)
Tüm bu ilemlerden sonra betiği çalıştırın
Örn:
http://www.siteismi.com/bigdump.php ve işleme başlayın bu
şekilde büyük boyutlu veritabanlarınız kolaylıkla yükleyebilirsiniz
Mysql Database Türkçe Karekter Sorunu
20 Eki
->
Biz phpciler için vazgeçilmez biricik veritabanımız Mysql,
hüzünlü bir sonbahar akşama MySQL 4.1.x versiyonunu tüm dünyaya duyurdu.
Burada garip olan bişey yoktu taki “Collation” denen kavramını görene kadar.
İlk gördügümde pek bir gereksiz gelmişti bu “Collation” kavramı bana.Hatta collation = sorunlar zincirinin ilk halkası olacağını daha ilk görüşte hissetmeye başlamıştım…Bu yeni gelen “Collation” olayı Türkçe karakterlerde sorun yaratıyor ve beni çileden çıkartıyordu. O zaman geçici bir çözüm olarak localhost da eski MySQL sürümü kullanarak acılarıma son vermiştim. (O anı kurtarma içgüdüsüydü bu sanırım) Fakat çalıştığım hostlarım çoktan yeni mysql e geçmişti. Artık çağa ayak uydurmanın zamanı gelmişti.
Bu “Collation” kavramı nedir, niye, çıktı nereden geldi başımıza, dertsiz başımıza dert mi katmak istiyor mysql programcıları diye düşünürken “Collation” kavramının mantığını ögrenince, bizim mysql programcı abilerimizin alınlarından öpmek geldi içimden.
MySQL’e “Collation” yapısını ekleyerek daha modern, gelişmiş ve onbinlerce dolarlık maliyeti olan veritabanlarındaki (Oracle gibi) bir standarda kavuşturmuşlardı biz gariban phpcileri; “Collation” olayının gelmesi ile sadece ilgili karakter setini yükleyerek gereksiz karakterlerden kaynaklanan (önceleri bütün dillere özgü karakter setlerini yükleyerek evrensel bir destek sağlıyordu mysql, çince gibi bir dil yapısı destegini bile yüklüyorduk bilgisayarımıza yada hostaki makinamıza ama ne gerek vardı ki, diye düşünüp geliştirmişler yeni “Collation” olayını) ağırlıktan kurtararak sorgu cevap sürelerinde kayda değer derecede azalmalar sağladığını öğrendim.Daha az cpu kullanarak daha hızlı sürede sorgu cevap mekanizmasına “Collation” yapısına geçiş ile kavuşmuş olduk.
Aslında ortada mysql türkçe karekter sorunu diye bir olay yoktur.Sorun bizim veri tabanlarımızı yanlış karakter setinde oluşturmamız ve server ayarlarınında birebir yanlış configürasyonundan kaynaklanmaktaymış.Ben bilgisayarımda appserv kullanırım.Herşeye öncelikle kendi bilgisayarımdaki karekter setinin dogru tanımlanması gerektiğini düşüneren başladım ve c:\windows\ klasöründeki my.ini dosyasını editlemek için kolları sıvadım bu dosyayı açtım:
my.ini dosyasında ki default-character-set=latin1 şeklindeki satırları default-character-set=latin5 yaptım.içimde bir iş yapmanın saadeti ile arkama yaslanıp olayın kefini çıkartmayı düşünürken birden karekterlerin tekrar gümlediğini görünce hevesim yine kursağımda kaldı. Biraz daha kurcalayınca kullandığınız veritabanının dolayısıyla tabloların da ilgili Collation ayarlarının latin5_turkish_ci olması gerektiğini gördüm. Fakat ne yazık ki benim tablolarımdaki field’ların collationları latin1_swedish_ci idi.Mysql Standart olarak swedish geçip işlem yapıyor eger siz özel olarak seçmezseniz. Eger bunu degiştirmezsek bu sütunlara yollayacağınız kayıtlar ise, isveçce dili göz önünde bulundurularak girilir. Bundan çıkan sonuç şu: isveçcede Türkçe karakter yer almaz, bu yüzden Türkçe karakterler yerine ? v.b. karakter çıkıyor. Tablolarımızı oluştururken Türkçe dil grubuna ait yapı olan latin5_turkish_ci şeklinde ayarlamamız gerekiyor. latin5_turkish_ci tablo yapısı ile biz “ISO 8859-9 Latin-1 modification for Turkish (Latin-5) ” haline uygun yapıyı seçmiş oluyoruz.
Yeni tablo oluştururken mutlaka charset degerini latin5 olarak yaparak oluşturursak artık karekter sorunu yaşamayız.
CREATE TABLE tablo1 (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
deneme VARCHAR(150)
) CHARSET=latin5;
Eski veritabanları ne yapacak:
Sistem ayarları latin1 olarak ayarlı olan bir makinedesiniz, bu ayarları yapsanız bile bu sefer türkçe karakterlerin yerine sayfanızda soru işaretleri çıkacaktır ‘?’ gibi.Yukarıda anlattığım nedenden dolayı bu makina latin1_swedish_ci ayarlıdır. isveç dilinde türkçe karekterler olmadığından siz verileri girerken, mysql onları anscii yapıda yerleştirmiştir veritabanına.Örnegin siz “öküz” kelimesini veritabanınıza girmişseniz onun hücredeki degeri “ö ;kü ;z” şeklindedir.
“Collation” olayının faydasını öküz örneginde daha iyi görüyorsunuz sanırım arkadaşlar.Veritabanından direk Türkçe yazılmış “öküz” kelimesini aramak başka “ö ;kü ;z” kelimesi şeklinde aramak başka performans verir.
Bu sorunu çözmek için ise scriptinizde kullandığınız config.php yada baglantıyı yaptığınız kod satırının altına yani
mysql_select_db(“$dbname”)fonksiyonun altına aşağıdaki kodları eklerseniz sorununuz düzelir.
mysql_query("SET NAMES 'latin5'");
mysql_query("SET CHARACTER SET latin5");
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");
Büyük Boyutlu Yedekleri Geri Yükleme
20 Eki
->
Bu konu hakkında açıklayıcı bir yazı olmayışının eksikliğini gördüğümden ve bu kategorideki sorunların büyük bölümünü bu konu oluşturduğundan yazmak istediğim.
Ssh ile veritabanı yedekleme & tekrar yükleme işlemi
aşağıdaki degişkenleri kendinize göre degiştirmeniz gerekmekte.Eger sitenizin path adresini tam olarak bilmiyorsanız şu php kodunu sitenizin ana dizinine gönderip _SERVER["DOCUMENT_ROOT"] degişkenindeki veriyi bulun.
info.php dosyasına yazılacak kod:
<? phpinfo() ?> Öncelikle Veritabanını nasıl yedekleriz.
Eger kendi dedicadet makinamız varsa yazmamız gereken komut ssh için şu:
| mysqldump –default-character-set=latin5 -u kullaniciadiniz -p kullanicisifreniz veritabaniadiniz > dbyedek.sql |
yedekleme işlemini tamamladıktan sonra bunu bilgisayarımıza indirmek için, bu dosyayı sıkıştırmamız gerek.Bunun içinde yazmamız gereken komut şu:
| tar -czf dbyedek.tgz dbyedek.sql |
sıkıştırılmış bu dosyayı sitemizin FTP dizinine kopyalamamız gerek ki bilgisayarımıza, ftp programı ile baglanıp indirelim.
| cp dbyedek.tgz /home/r10net/public_html/ |
cuteftp ile bu dosyayı şu an indiremeyiz çünkü indirmeye yetkili tek kişi root şu an için.Bunun için dosyanın owner özelliğini degiştirmemiz gerek.Onun içinde şu komutu kullanıyoruz.
| chown -R r10net /home/r10net/public_html/dbyedek.tgz |
artık veritabanımızın yedegini alıp, cuteftp programı ile bilgisayarımıza rahatca indirip saklaya biliriz.
Bu dosyayı ileride tekrar yüklemek icab ederse ssh ile girip kullanmamız gereken komut şu:
| mysqldump –default-character-set=latin5 -u kullaniciadiniz -p kullanicisifreniz veritabaniadiniz < dbyedek.sql |
Phpmyadmin ile yedekleme ve geri yükleme işlemi
Eger share hosting kullanıyorsanız veritabanı yedeklemenizi phpmyadmin ile yaparsınız. Yaptığınız bu yedekleme dosyasını tekrar başka hosta yüklemek bazen tam bir çin işkencesi haline dönüşür.
Bu çin işkencesi durumundan bizi kurtaran piyasada çok fazla olmasada yararlı programlar mevcut. Bu programların hemen hemen hepsini denedim ve en yararlısını forumda paylaşmak istedigim.
Ekdeki dosyayı indirip bilgisayarınıza kurun. Veritabanı yedeginizi programa yükleyin.Bu program veritabanızı sorunsuz şekilde sistematik olarak parçalara bölüyor.
örnegin 200mb boyutundaki veritabanınızı 10 eşit parçaya bölerek çok çok rahat bir şekilde timeout sorunu yaşamadan yeni hostinginize göndere bilirsiniz.
illa 10 parçaya böleceksiniz diye bir kaide yok tabi
megabyte olarakta bölüp göndermenize yardımcı oluyor.2mb boyutunda parçalayıp biraz ugraşarak sorunsuz bir şekilde göndermenizi sağlıyor.
Mysql Türkçe Karekter Sorunu Çözümü [ Resimli Anlatım ]
20 Eki
Elimdeki 410mb büyüklüğündenki veritabanını, yeni hostuma taşımam gerekiyordu. Kabus dolu 3 gün o an başladı. Üstelik telekomun fiber kablosuda o gün kopmuştu. Upload ve download işlemleri felç durumdaydı. Dosyayı yeni hosta göndermek tam bir çin işkencesi oldu.
nihayet gönderdim deyip sevinirken, bu seferde başıma türkçe karekter problemi çıktı. Eski hostuma dönüp veritabanını terkar yedekleme gibi bir şansımda artık yoktu. Elimdeki bu türkçe karekterleri bozuk 410mb büyüklügündeki dosya ile kalakalmıştım.
Hemen çalışmalara başladım. 3 gün boyunca türkçe karekter sorununu çözememenin en az 40 farklı yolunu bulmuş oldum.
- phpmyadminden colocation kısmını ayarladım olmadı.
- Dosyayı açıp karekterleri replace yapayım dedim ama kolay degil 410mb büyüklüğündeki text dosyayı açıp tek tek karekterleri replace edecek,
bilgisayarı kilitlemeyecek babayiğit bir program.
- Veritabanını parçalayayım 1mb olarak tek tek notdefteri ile açıp degiştireyim dedim, 410 parça dosya not defteri ile tek tek tüm türkçe karekterleri degiştirmek çin işkencesinden farksızdı. Daha yolun başında bilgisayar onlarca kez kilitlendi.
Sonunda istedigin şeyi otomaik olarak yapan bir program buldum.
![Mysql Türkçe Karekter Sorunu Çözümü [ Resimli Anlatım ] sqlxr1 Mysql Türkçe Karekter Sorunu Çözümü [ Resimli Anlatım ]](http://img248.imageshack.us/img248/8629/sqlxr1.gif)
Programın adı textped
Bu program ile sql dosyanızı açınca size otomaik karekterleri türkçe yapıyor. Açılan dosyayı Save As yapıp ismini degiştirince artık karekterler türkçe hale geliyor.
![Mysql Türkçe Karekter Sorunu Çözümü [ Resimli Anlatım ] alzip Mysql Türkçe Karekter Sorunu Çözümü [ Resimli Anlatım ]](http://www.r10.net/alzip.gif)
2.nci iş olarak bu dosyayı windows ortamında sorunsuzca .gz formatında sıkıştırmamız gerekiyor .Bu iş içinde ücretsiz olan Alzip programından faydalanıyoruz
3.ncü iş olarak veritabani.gz olarak sıkıştırdığımız bu dosyamızı FTP ile kendi hostumuzdaki bir klasöre gönderiyoruz. Aynı klasöre bigdump.php scriptinide gönderiyoruz. Ama göndermezden önce bigdump.php dosyasında mysql şifrelerimizi tanımlamamız gerekiyor.
4.ncü iş olarak bigdump.php dosyasını çalıştırmak ve arkamıza yaslanmak. 30-40 saniye içinde veritabanımız türkçe karekter sorunu halledilmiş olarak hostumuza göndermiş oluyoruz.
Sql Nedir ?
19 Eki
Structured Query LanguageStructured Query Language yani Yapılandırılmış sorgu dili anlamındadır. (RDBMS) Relatianol Database Management System veritabanlarına girmek için kullanılan standart yazılım.
Bir veritabanından bilgi çekmeye yarayan program dilidir. IBM tarafından 1975 yılında yaratılmıştır. İlk adı SEQUEL (Structured English Query Language ) dı fakat sonra SQL adını almıştır.
SQL dili ile veritabanına ekleme, silme ve düzenleme yapılabilir. SQL dilini kullanan ve en çok bilinen veri tabanları
ORACLE
SYBASE
MICROSOFT
SQL SERVER
ACCESS
INGRES
En çok kullanılan SQL komutları
“SELECT”, “INSERT”, “UPDATE”, “CREATE”, “DELETE” ve “DROP” dur. Bu komutlar ile neredeyse bir veritabanının ihtiyaç duyabileceği her şey yapılabilmektedir.
SQL Komutunda ki Koşullar
= Eşittir
> Büyüktür
< Küçüktür
>= Büyük ve eşittir
<= Küçük veya eşittir
<> Eşit Değildir LIKE



Yorumlar