2016-12-09 70 views
1

我有一個帶有後端PHP的MySQL數據庫。從PHP插入60000行Mysql

在一個表我要插入60000行

我們向我的PHP返回了1,000行的查詢。對於每行我們必須插入60行。我們認爲做了一個循環,但我們不知道是否是最佳做法。

該插入數據代碼的一部分是:

$turnos = $db->query("SELECT * FROM turno t 
        WHERE t.canchaId = :cancha 
        AND t.fecha BETWEEN :fechaInicio AND :fechaFin 
        AND t.nombre LIKE :cadena 
        ORDER BY t.fecha,t.hora ASC", 
      array("cancha" => $cancha["idCancha"], "fechaInicio" => $fechaInicio, "fechaFin" => $fechaFin, "cadena" => "%turno fijo%")); 
foreach($turnos as $turno) { 
    //turnos have 1000 rows 
    $fecha = date_create($turno["fecha"]); 
    date_add($fecha, date_interval_create_from_date_string('7 days')); 
    $anioAuxiliar = 2017; 

    while(2017 == $anioAuxiliar){ 
     //60 times 
     $data1 = turno[data1]; 
     $data2 = turno[data2]; 
     ... 
     $fechaAGuardar = (String) $fecha->format('Y-m-d'); 
     $result = $db->query("INSERT INTO turno(fechaAGuardar, data2, data3, data4, data5, data6, data7, data8) VALUES(:fechaAGuardar, :data2, :data3, :data4, :data5, :data6, :data7, :data8)", 
     array("fechaAGuardar" => $fechaAGuardar, "data2" => $data2, "data3" => $data3, "data4" => $data4, "data5" => $data5, "data6" => $data6, "data7" => $data7, "data8" => $data8)); 

     date_add($fecha, date_interval_create_from_date_string('7 days')); 
     $anioAuxiliar = (int) $fecha->format("Y"); 
    } 

    $cantidad_turnos = $cantidad_turnos + 1; 
} 

這PHP是與phpmyadmin的託管。

所以我的問題是:

這是插入60000行的最好方法?

咱們considerer顧及另一個約束? (如:phpmyadmin的不允許您插入行的量)

謝謝你幫我,有什麼建議,歡迎

// //編輯

的插入數據的變化,我們必須插入日期時間,並且對於每個循環,我們必須添加7天插入的最後日期。因此,我們不能使用與選擇

+0

批插入是最好的方法 – Elby

+0

可能重複[最快的方式來插入海量數據到Mysql數據庫](http://stackoverflow.com/questions/15474675/quickest-way-to-insert-mass-data-into -mysql-database) – Elby

+0

請給我們舉個例子嗎?我們不知道如何用mysql創建一個浴文件。其他人推薦我們使用批次。 –

回答

0

插入作爲一堆在註釋中描述的研究員,INSERT/SELECT是去,如果這個數據是在同一個服務器/數據庫的方式。根本不需要使用PHP。您的年評論可以是handled with DATE_ADD

無論如何,如果有任何其他要求,則不能使用PHP,可以考慮使用Bulk Data Loading

分析你的代碼,最重要的提示將是:不要使用多個INSERT INTO TABLE表達式。每個INSERT INTO都會導致數據庫往返,而且事情會變得非常緩慢。取而代之,將多個值連接成一個INSERT INTO(例如鏈接):

INSERT INTO yourtable VALUES(1,2),(5,5),...;

祝你好運!