• 14-09-2021, 21:25:31
    #1
    Merhaba Üstadlarım

    Aralarında herhangi bir noktalama işareti olmayan TXT dosyam var. Bu dosyayı Veritabanındaki tablo sütun genişliklerine göre parçalayıp, kaydetmek istiyorum. Adım adım anlatayım...
    1.tabloolustur.php sayfam ile veritabanında tablo oluşturuyorum. Oluşturduğum tabloların sütun sayıları ve sütun genişlikleri aynı olmayacak.
    2.TXT dosya verileri arasında noktalama işareti yok. Öncelikle sütun genişliğine göre txt dosya satırlarını bölmek istiyorum. Bunun için;
    $result = $baglanti->prepare("SHOW COLUMNS FROM customers where Field NOT IN('id')");
    
    $result->execute();
    $colcount = $result->columnCount()-1;
     
    $columLen = array();
    
    foreach($result as $key => $col){
    
      preg_match('/\d+/', $col['Type'], $len);
      $len = (isset($len[0]))? $len[0] : '';  
      $fieldname = $col['Field'];            
      $columLen[$fieldname]  = $len;  
    
    }
    kodu ile sütun Sayısını ve sütun genişliklerini alıyorum.

    3. Daha sonra aşağıdaki fonksiyon ile verileri virgül ile birbirinden ayırıyorum.
    function txtBol($metin, $genislik){
        $parcala=array();
    
        foreach ($genislik  as $sutunadi => $lenght)
        {
            $parcala[$sutunadi] = substr($metin, 0, $lenght);
            $metin = substr($metin, $lenght);
            
        }
    return $parcala;
    }
    4. Sütun adlarını da aşağıdaki kod ile alıyorum. (Sorguda kullanmak için)
    $KolAdi = $baglanti->query("SHOW COLUMNS FROM customers  where Field NOT IN('id')");
    $KolAdi->execute();
     $colonAdi= $KolAdi->fetchAll(PDO::FETCH_COLUMN);
     $colonAdi=implode(',', $colonAdi);
    5.
    $dosya=new SplFileObject('data.txt');
    
    while(!$dosya->eof())
    {
    
    $satir=$dosya->fgets();
    $satir2=txtBol($satir, $columLen);
    
    }
    Böldüğüm verileri ekrana yazdırırken doğru bir şekilde yazdırıyor. Buraya kadar sorun yok.
    Fakat PDO ile doğru sorguyu oluşturamıyorum. sorguyu nasıl oluşturmalıyım? (Tablo sütun adları ve sütun genişlikleri aynı değil. Her tablo için farklı sayıda ve genişlikte sütunlar olacak )
    Yardımcı olursanız sevinirim.
  • 16-09-2021, 00:56:43
    #2
    PHP bilen üstadlarım, lütfen yardımcı olun