2

ここで 1 つの問題が発生しました。Google で何を検索し、どのように解決すればよいかわかりません。ある MySQL テーブルから別のテーブルにデータをエクスポートおよびインポートする PHP アプリケーションを作成しています。そして、これらのテーブルに問題があります。

ソース テーブルでは、次のようになります。

ソース テーブル

そして、宛先テーブルには ID があり、行として pr0、pr1、pr2 があります。したがって、次のようになります。 ここに画像の説明を入力

問題は次のとおりです。コピーするだけの場合(最初のテーブルのすべての値を2番目の新しい行として挿入します)、たとえば1000ではなく20.000行になります。

すべてのレコードを 2 番目のデータベースに新しい行としてコピーしても、行を融合する方法はありますか? 基本的に、そのID_の最後の行に値が存在するかどうかを確認する必要があります。その行と列(たとえばpr2)に値が存在する場合は、新しい行を挿入しますが、同じID_の最後の行にpr2列に値がない場合、その行を pr2 列の値で更新するだけです。

PHPまたはMySQLでそれを行う方法が必要です。

4

1 に答える 1

0

したがって、いくつかの問題があります。1) SQL から PHP にテーブルをコピーし、メモリ使用量に注意して、PHP コマンド Memory_usage() でスクリプトを実行します。SQL データのインポートにはコストがかかる可能性があることがわかります。これを見てください。もう1つのことは、配列に新しい値を設定する際にPHPがメモリを解放することです。後で役に立ちます。

2)値がソースで一意であるか、宛先テーブルで一意である必要があるかを理解できませんでした..したがって、すべてのソースがそのまま宛先にある必要があると想定します。また、pr = pr0 および quant=pr1 であると仮定します。

3) 名前が一致しません。これも問題になる可能性があります。それの世話をします..また。

4) SQL コネクタとして My_sql を使用します..そして $db が接続されています.. スクリプト:

 <?PHP
   $select_sql = "SELECT * FROM Table_source";
   $data_source = array();
   while($array_data= mysql_fetch_array($select_sql)) {
        $data_source[] = $array_data;   
         $insert_data=array();
   }
   $bulk =2000;
   foreach($data_source as $data){
     if(isset($start_query) == false)
      {
          $start_query = 'REPLACE INTO DEST_TABLE ('ID_','pr0','pr1','pr2')';
      }
     $insert_data[]=implode(',',$data).',0)';// will set 0 to the
     if(count($insert_data) >=$bulk){
        $values = implode('),(',$insert_data);
        $values = substr(1,2,$values);
        $values = ' VALUES '.$values;
        $insert_query = $start_query.' '.$values;
        $mysqli->query($insert_query);
        $insert_data = array(); 
     } //CHECK THE SYNTAX IM NOT SURE OF ALL OF IT MOSTLY THE SQL PART>> SEE THAT THE QUERY IS OK 
   }
   if(count($insert_data) >=$bulk) // IF THERE ARE ANY EXTRA PIECES..
      { 
        $values = implode('),(',$insert_data);
        $values = substr(1,2,$values);
        $values = ' VALUES '.$values;
        $insert_query = $start_query.' '.$values;
        $mysqli->query($insert_query);
        $insert_data = null; 
     }  
  ?>

ITは頭から離れていますが、このアイデアを確認して、これが機能するかどうかを教えてください。バグの夜は、QUERY構造で忘れていた小さなものにあり、これを印刷してPHPmyADMINまたはDBクエリに貼り付けて、すべて良いことを確認してください。コンセプトは多くの問題を解決します..

于 2013-02-18T02:13:53.477 に答える