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($dosya, 4096);
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($dosya, 4096);
$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.