Mysql veritabanında Stored Procedures kullanarak toplu insert işlemi |
||||||
Toplu veri girişi yapmak bazen gerekli olabiliyor. Mesela binlerce 'jpg' uzantılı resmi kendi sunucunuza upload edip bu resimlerin 'resimler/1.jpg' gibi sunucudaki adres bilgilerini veritabanına girmek istediğinizde toplu insert işlemi yapmak isteyebilirsiniz. Bu durumda Stored Procedures kullanmak daha mantıklı olabilir. Stored Procedures yazmadan önce ilk başta resimlerin bilgilerini gireceğimiz tabloyu Mysql veritabanı programında oluşturalım. Tabloyu oluşturacak sql kodu: -- -- Tablo yapısı: `image_src` -- CREATE TABLE IF NOT EXISTS `image_src` ( `id` int(11) NOT NULL AUTO_INCREMENT, `category` varchar(15) NOT NULL, `source` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ; Yukarıdaki tabloya sırasıyla id (resim kimlik numarası) , category (resmin kategorisi) ve source (resmin bulunduğu yerin adres) bilgilerini gireceğiz. Resimlerin sunucumuzda nasıl isimlendirildiğine ve yerleştirildiğine bakalım:
Eğer resimleri teker teker 1, 2, 3 ... şeklinde isimlendirmekle uğraşmak istemiyorsanız bunun yerine dosyaları otomatik olarak isimlendiren ücretli veya ücretsiz File Renamer gibi programlar kullanabilirsiniz Şimdi istediğimiz kadar insert işlemi yapabilien bir Stored Procedures yazalım. Procedure yazarken resimlerin başlangıç bir bitiş numarasını ve resimlerin kategori bilgisini parametre olarak almasını sağlayalım ki düzenli bir toplu insert işlemi yapalım : DELIMITER // CREATE PROCEDURE `src_insert`(IN strt INTEGER(11) , IN nd INTEGER(11), IN ctgry VARCHAR(15) ) BEGIN WHILE strt < nd DO INSERT INTO image_src(id,category,source) VALUES ('NEW.id',ctgry ,CONCAT(ctgry ,'/' , strt ,'.jpg')); SET strt = strt + 1; END WHILE; END // DELIMITER ;Not: Mysql istemcisinde Trigger veya Stored Procedures yaratmaya kalkışınca hata alacaksınız. Noktalı virguller (;) komut bitiminde kullanılır fakat noktalı virgül kullandıktan sonra Procedure veya Trigger devam ettiğinden Mysql hata verir. Bunu engellemek için DELIMETER komutu ile ayraç kullanmamız gerekir. Yazdığımız procedure 3 adet parametre alıyor. Bu paramatreler sırayla; strt girilecek resmin başlangıç numarası, nd girilecek son resmin numarası ctgry ise resimlerin kategorisini temsil edecek. CONCAT(ctgry ,'/' , strt ,'.jpg') bize kategori ismine göre bir adres yaratır. CONCAT komutu girilen karakter katarlarını birleştirmeye yarar. Mesela kategori olarak 'hayvanlar' seçtiysek bu komut 'hayvanlar/1.jpg' sonucunu döndürür. While Loop ile girilien başlangıç ve bitiş numarınlarına göre bir kontrol yarattık. Bu sayede istenilen bir sayıdan insert yapmaya ve istediğimiz bir sayıda sonlandırmayı sağladık. While döngüsü bize toplu insert işlemi yapmamıza olanak sağlıyor. 'src_insert' adlı procedure olşturduktan sonra CALL komutu ile yazdığımız procedure'u çalıştıralım.(1'den 10'a kadar 'hayvanlar' kategorisinde insert işlemi yapacak şekilde insert işlemi yapar) : CALL src_insert(1,10,'hayvanlar') Yukarıdaki komutu çaluştırınca çıkan sonuç: ( 1'den 10'a kadar sırayla source alanına resimlerin adresleri giriliyor. )
Sunucunuzun html_public klasörü içindeki 'hayvanlar' klasörüne doğru isimlendirdiğiniz resimleri yerleştirdiyseniz 'image_src' tablosundan bilgileri çekilerek sırayla resimlerin adreslerini artık alıp istediğimiz gibi kullanabiliriz. Stored Procedures ile daha fazla bilgiye ulaşmak için buraya tıklayın. Umarım yazım faydalı olmuştur. |
||||||
|
||||||
|
July 2010 (1)
April 2010 (4)
March 2010 (1)
February 2010 (3)
December 2009 (2)
November 2009 (1)
October 2009 (4)
September 2009 (16)
August 2009 (21)
July 2009 (4)
Jquery ile Form ToolTi ..
İlk görev yerim ;)
Jquery, Ajax ve PHP il ..
PHP ve Jquery ile Goog ..
PHP ve Jquery Ajax ile ..
More Effective C#: 50 ..
Jquery ile dinamik tab ..
Java Mobile 3D Oyun Pr ..
Bir Tasarım Şablonu: S ..
Etiketler
| Ajax | Apache | Asp.net | Binary-data | Çalışma | Çoklu-dosya | Geoip | Gridview | Hayat | Iframe | Ip | İş | Javascript | Jquery | Linq | Linq-to-sql | Lokasyon | Miş-muş | Mysql | Pear-framework | Php | Phpmyadmin | Proje | Tecrübe | Veritabanı | Veritabanı-işlemleri | Xampp | Yazılımcı | Zaman | Ziyaretçi-bilgi |arama
sosyal




