Mysql select into outfile ve dumpfile ifadesi

selectinto ifadesi sorgu sonucunu herhangi bir dosyaya kaydetmemizi, ya da bir değişkende depolamamızı sağlar. Bu yöntemle veri tabanında bulunan verileri dosyaya kaydederek yedekleyebiliriz. Az önce yazdığımız selectinto ifadesinde bulunan üç nokta yerine sütun isimleri ya da * işareti gelmelidir. Select … into ile aldığımız yedeği load data infile ifadesiyle veri tabanına yükleyebiliriz. Bu ifade bazı seçeneklere sahiptir. Kullanımı temel olarak şu şekildedir:

select * into outfile 'veri.txt' from uyeler;

Bu sorgu uyeler tablosunu veri.txt dosyasına kaydeder. Bu dosya Mysql’in data klasöründe bulunan, işlem yaptığımız veritabanı klasöründe bulunur. Yani veritabanınızın adı test ise dosyanın yolu data/test/veri.txt olur.
Select into ifadesi 3 şekilde kullanılabilir:
Select … into outfile: seçilen satırları dosyaya yazar. Varsayılan olarak tablodaki alanlar tab yani sekme ile satırlar da newline dediğimiz yeni satır yani \n karakteriyle birbirinden ayrılırlar. Kullanımı:

select * into outfile 'veri.txt' from uyeler;

Select … into dumpfile: seçilen tek bir satırı, verileri formatlamadan dosyaya yazar. Sorgu sonucu tek bir satır döndürmesi gerekir. Aksi halde hata mesajı alırsınız. Kullanımı:

select * into dumpfile 'veri.txt' from uyeler where uyeno='1';

Select … into @var: seçilen sütun değerlerini değişkene aktarır. Kullanımı:

Select uyeNo, uyeAd into @a, @b from uyeler;

Bu ifadenin klasik select ifadesinden kullanım farkı, seçilen alanlar ile from sözcüğü arasında into ve ayarların yer almasıdır. Varsayılan ayarları değiştirerek bir örnek yapalım:

SELECT * INTO OUTFILE 'veri.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM haberler;

Şimdi sorgumuzu açıklayalım. FIELDS TERMINATED BY seçeneği alanları yani sütunları ayırmak için bir ayraç belirtir. Varsayılan durumda sekme yani tab karakteri olduğunu belirtmiştik. Biz sorgumuzda virgül kullandık. OPTIONALLY ENCLOSED BY seçeneği metin alanlarını (varchar, text vb.) belirtilen ayraç içerisine alır. Bu seçeneğin başında bulunan OPTIONALLY eklenmezse tüm alanları belirtilen ayraç içerisine alır. LINES TERMINATED BY seçeneği satırları birbirinden ayırmak için belirtilen ayracı kullanır.

Mysql OPTIONALLY ENCLOSED BY ile belirlenen ayraç veriler içerisinde geçiyorsa, bunlara kaçış karakteri yani ters slash ekleyecektir. Eğer çift tırnak ile ayırdığınız alanda “Şeklinde konuştu” gibi tırnak içinde bir cümle varsa: \”Şeklinde konuştu\” olarak çıktılanacaktır.
Daha fazla bilgi için Mysql kılavuzuna bakabilirsiniz.

Henüz Yorum Yapan Olmadı

Yorum Yapın