Gerçek bir Başlangıç ​​için PHP + MySQL sorguları

0 Cevap php

Yanlış başladıktan yıllar sonra, ben PHP kodu öğrenme içine ilk nihayet dalış başkanı değilim. Yaklaşık 10 öğrenmek için önceki girişimleri başarısız olduktan sonra, heyecanlı oluyor ve sonunda oldukça iyi gidiyor.

Ben ile öğrenmek için kullanıyorum proje çalışmaları içindir. Ben bir MySQL veritabanı içine 100 + sabit genişlikli metin dosyaları almak için çalışıyorum.

So far so good
I'm getting comfortable with sql, and I'm learning some php tricks, but I'm not sure how to tie all the pieces together. The basic structure for what I want to do goes something like the following:

  1. Ben almak istiyorum metin dosyasını adlandırın
  2. Geçici bir db için one field içine veri almak için LOAD DATA INFILE yapmak
  3. () Gerçek sütunlar halinde sabit genişlikli dosya ayrı substring kullanın
  4. Remove lines I don't want (file identifiers, subtotals, vb....)
  5. Ana db için, geçici db dosyalarını ekleyin
  6. Temp db bırakın ve tekrar başlamak

Eğer ekli kodu görebileceğiniz gibi, thigns iyi çalışıyor. Bu, yeni bir dosya alır geçici tabloya ithalat, istenmeyen çizgileri kaldırır ve sonra nihai ana veritabanına içerik taşır. Mükemmel.

Questions three
My two questions are:

  1. Ben bu 'doğru' yapıyorum? Ben anohter sonra sorguları tek bir yığın çalıştırmak istediğiniz zaman, rasgele değişkenler için mysql_query Atama ben duruyorsun?

  2. Nasıl oraya her dosya döngü komut dosyası otomatik hakkında gitmek ve bunları ithal istiyorsunuz? Dosya adını değiştirmek zorunda ve komut dosyası her zaman çalıştırmak yerine.

  3. Ve, son olarak, ben almak istiyorum dosya (lar) 'seçmek' için ne PHP işlevi kullanmak istiyorsunuz? Bir e-postaya bir dosya ekler gibi, biliyorum ->, dosya için göz yükleyin, ve sonra bunun üzerinde komut dosyasını çalıştırmak?

Bu ultra-acemi bir soru olmanın, ancak sorun tüm parçaları birbirine nasıl görüyorum yaşıyorum için üzgünüm. Specifcally sql sorguları bir komut dosyası oluşturmak için bir araya sinirli olsun nasıl birden merak ediyorum? Ben aşağıda bunu yaptık yolu? Bazı başka yolu?

Teşekkürler herhangi anlayışlar için x 100!

Havlu kumaş

<?php 
 // 1. Create db connection  
 $connection = mysql_connect("localhost","root","root") or die("DB connection failed:" . mysql_error());

 // 2. Select the database  
 $db_select = mysql_select_db("pd",$connection) or die("Couldn't select the database:" . mysql_error());
?> 



 <?php 
  // 3. Perform db query  
  // Drop table import if it already exists
  $q="DROP table IF EXISTS import";


  //4. Make new import table with just one field
  if ($newtable = mysql_query("CREATE TABLE import (main VARCHAR(700));", $connection)) {
   echo "Table import made successfully" . "<br>";
  } else{
   echo "Table import was not made" . "<br>";
   }

  //5. LOAD DATA INFILE 
  $load_data = mysql_query("LOAD DATA INFILE '/users/terrysutton/Desktop/importmeMay2010.txt' INTO table import;", $connection) or die("Load data failed" . mysql_error());


   //6.  Cleanup unwanted lines
  if ($cleanup = mysql_query("DELETE FROM import WHERE main LIKE '%GRAND%' OR main LIKE '%Subt%' OR main LIKE '%Subt%'  OR main LIKE '%USER%'  OR main LIKE '%DATE%'  OR main LIKE '%FOR:%' OR main LIKE '%LOCATION%' OR main LIKE '%---%' OR `main` = '' OR `main` = '';")){
   echo "Table import successfully cleaned up";
  } else{
   echo "Table import was not successfully cleaned up" . "<br>";
  }



  // 7. Next, make a table called "temp" to store the data before it gets imported to denominators
  $temptable = mysql_query("CREATE TABLE temp
  SELECT
  SUBSTR(main,1,10) AS 'Unit', 
  SUBSTR(main,12,18) AS 'Description', 
  SUBSTR(main,31,5) AS 'BD Days', 
  SUBSTR(main,39,4) AS 'ADM',
  SUBSTR(main,45,4) AS 'DIS', 
  SUBSTR(main,51,4) AS 'EXP', 
  SUBSTR(main,56,5) AS 'PD', 
  SUBSTR(main,100,5) AS 'YTDADM', 
  SUBSTR(main,106,5) AS 'YTDDIS', 
  SUBSTR(main,113,4) AS 'YTDEXP', 
  SUBSTR(main,118,5) AS 'YTDPD'
  FROM import;");


  // 8. Add a column for the date 
  $datecolumn = mysql_query("ALTER TABLE temp ADD Date VARCHAR(20) AFTER Unit;");
  $date = mysql_query("UPDATE temp SET Date='APR 2010';");

  // 8. Move data from the temp table to its final home in the main database
  // Append data in temp table to denominator table
  $append = mysql_query("INSERT INTO denominators SELECT * FROM temp;");

  // 9. Drop import and temp tables to start from scratch.  
  $droptables = mysql_query("DROP TABLE import, temp;");

  // 10. Next, rename the text file to be imported and do the whole thing over again.

 ?>


<?php 
// 5. Close connection
mysql_close($connection);
?>

0 Cevap