O Şimdi Asker
Pim Çek Bomba At....Astek

TXT'den SQL


Elimizde diyelim ki 1000 satırlık bir txt dosyası var. Biz bunu sql tablomuza aktarmak istiyoruz. Basit bir işlem ile kolaylıkla yapabiliriz.

Elimizdeki excel dosyalarını da metin dosyası halinde kayıt edip bu işlemi gerçekleştirebiliriz. Ancak excel için daha kolay yöntemlerde var. Yazının sonunda bundan da bahsedeceğim.

Öncelikle txt den sql'e verilerimizi aktaralım.

Kullanacağımız fonksiyon "fgets".

Satırları tek tek sql tablomuza okutan kod.

mysql_connect ve mysql_select_db fonksiyonlarına gerekli bilgilermizi yazıp bağlantımızı gerçekleştirelim. Elimizde dosya.txt diye bir metin dosyamız olsun.
Eğer metin dosyamız bir klasör içindeyse ;
$dosya = fopen("klasörüm/dosya.txt","r");
şeklinde değişkende değişiklik yapılmalı.

Veritabanımızda sqltablo adlı tablomuz olsun. Phpmyadminden oluşturabileceiğiniz gibi aşağıdaki sql kodunu da okutabilirsiniz.

CREATE TABLE IF NOT EXISTS `sqltablo` (
`icerik` text NOT NULL
) TYPE=MyISAM;

Aşağıdaki kodu txt2sql.php şeklinde kayıt altına alıp çalıştırırsak, dosya.txt'deki her satırda ki bilgileri sqltablo tablomuzda ki içerik hücresine atacaktır.

Php Kodu:

<?php 

$dosya 
fopen("dosya.txt","r");
$Baglanti=mysql_connect("localhost""mysql kullanıcı""mysql kullanıcı şifresi")or die("MySQL Bağlantı Hatası");
if(
$Baglanti)mysql_select_db("mysqlveritabanı") or die("Veri Tabanına Bağlantı Hatası");

if (
$dosya) {
    while (!
feof($dosya)) {
        
$veri fgets($dosya4096);
        
mysql_query("INSERT INTO sqltablo(icerik) VALUES('".$veri."')") or die(mysql_error());
    }
    
fclose($dosya);
}
 
?>


Bu basit kodu geliştirebilirsiniz. Örneğin araları boşluk(Boşluğu Ctrl+H ile | simgesi ile değiştirirseniz hatasız çalışabilirsiniz.) ya da "|" gibi bir simge ile ayrılmış metin dosyamız olsun. Ad soyad adres telefon gibi bilgiler. Söz gelimi,

Ali|Veli|Çanyaka/Ankara|3121188888

gibi bir metin dosyamız olsun. Amacımız sql tablosuna her | simgesi ile ayrılan bilgiyi tablomuzda ilgili yere okutmak.

Bunun için explode fonksiyonu devreye girecek.

Öncelikle sql tablomuzu oluşturalım.
+----+--------------+---------+------------------------+----------+
| nu | ad | soyad | adres | telefon |
+----+--------------+---------+------------------------+----------+
| 1 | Ali | Veli | Çanyaka/Ankara |3121188888|
+----+--------------+---------+------------------------+----------+


Sql kodumuz,

CREATE TABLE IF NOT EXISTS `sqltablo` (
`nu` int(11) NOT NULL auto_increment,
`ad` varchar(255) NOT NULL default '',
`soyad` varchar(255) NOT NULL default '',
`adres` varchar(255) NOT NULL default '',
`telefon` varchar(255) NOT NULL default '',
PRIMARY KEY (`nu`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

Phpmyadminden sqltablo adlı veritabanı oluşturup hücreleri tek tek girerekte oluşturabilirsiniz ya da üsteki kodu okutabilirsiniz.

Php Kodumuz,


<?php 

$dosya 
fopen("dosya.txt","r");
$Baglanti=mysql_connect("localhost""mysql kullanıcı""mysql kullanıcı şifresi")or die("MySQL Bağlantı Hatası");
if(
$Baglanti)mysql_select_db("mysqlveritabanı") or die("Veri Tabanına Bağlantı Hatası");

if (
$dosya) {
    while (!
feof($dosya)) {
        
$veri fgets($dosya4096);
        
$al explode('|',$veri);
        
mysql_query("INSERT INTO sqltablo(ad,soyad,adres,telefon) VALUES('".$al[0]."','".$al[1]."','".$al[2]."','".$al[3]."')") or die(mysql_error());
    }
    
fclose($dosya);
}
 
?>


Kodumuzu txt2sql.php olarak kayıt edip çalıştırırsak istediğimiz sonuca ulaşabiliriz.

Çok değişik yollardan metin belgesini MySQL'e aktabilirsiniz. Döngü olarak while kullanışmış bunun yerine foreach ya da for kullanabilinir. Piyasa da değişik çeviri programları da mevcut. Bedava olan yok ama crackede muhtaç olmayın :)


Excel dosyasını metin dosyası şeklinde kayıt edip yukardaki kodu çalıştarabilirsiniz.

Kolay Gelsin

Not:İlgili örnekleri indirmek için aşağıdaki bağlantıya dokunun.

Benzer Başlıklar...

» MySQL Front İle Excel Dosyasını MySQL e Aktaralım


Yorumlar (2)

  1. Emre

    06.12.2009, 02:45

    elimde maillist vardı bu sayede sqle aktardım teşekküler

  2. Melih

    07.12.2009, 06:34

    İşinize yaradıysa ne mutlu bize :) ufak bir kod zaten bu programlarıda var uğraşmak istemeyenler google\\\'dan txt2sql ya da txt to mysql gibi bir arama yaparlarsa programları görebilirler


(Gerekli)



(Gerekli)