Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Php . का उपयोग करके MySQL डेटाबेस में डेटा का बैच सम्मिलन

लूप के लिए उपयोग कर रहे हैं?

लेकिन MySQL में डेटा लोड करने का सबसे तेज़ विकल्प का उपयोग करना है। डेटा जानकारी लोड करें कमांड, आप PHP के माध्यम से लोड करने के लिए फ़ाइल बना सकते हैं और फिर इसे एक अलग प्रक्रिया (या मूल प्रक्रिया में अंतिम चरण के रूप में) के माध्यम से MySQL को फीड कर सकते हैं।

यदि आप किसी फ़ाइल का उपयोग नहीं कर सकते हैं, तो निम्न सिंटैक्स का उपयोग करें:

insert into table(col1, col2) VALUES (val1,val2), (val3,val4), (val5, val6)

ताकि आप चलाने के लिए वाक्यों की कुल संख्या को कम कर दें।

संपादित करें:आपके स्निपेट को देखते हुए, ऐसा लगता है कि आप INSERT ... ON से लाभ उठा सकते हैं। डुप्लीकेट कुंजी अद्यतन MySQL का सिंटैक्स, डेटाबेस को काम करने देता है और प्रश्नों की मात्रा को कम करता है। यह मानता है कि आपकी तालिका में प्राथमिक कुंजी या अद्वितीय अनुक्रमणिका है।

प्रत्येक 100 पंक्तियों में DB को हिट करने के लिए आप कुछ ऐसा कर सकते हैं (कृपया इसकी समीक्षा करें और इसे अपने पर्यावरण में ठीक करें )

$insertOrUpdateStatement1 = "INSERT INTO table (col1, col2) VALUES ";
$insertOrUpdateStatement2 = "ON DUPLICATE KEY UPDATE ";
$counter = 0;
$queries = array();

foreach($itemList as $key => $item){
    $val1 = escape($item->col1); //escape is a function that will make 
                                 //the input safe from SQL injection. 
                                 //Depends on how are you accessing the DB

    $val2 = escape($item->col2);

    $queries[] = $insertOrUpdateStatement1. 
    "('$val1','$val2')".$insertOrUpdateStatement2.
    "col1 = '$val1', col2 = '$val2'";

    $counter++;

    if ($counter % 100 == 0) {
        executeQueries($queries);
        $queries = array();
        $counter = 0;
    }
}

और executeQueries सरणी को पकड़ लेगी और एक से अधिक क्वेरी भेज देगी:

function executeQueries($queries) {
   $data = "";
     foreach ($queries as $query) {
        $data.=$query.";\n";
    }
    executeQuery($data);
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql डेटाबेस से समान मानों का चयन करें

  2. दिनांक स्ट्रिंग से संभावित इंजेक्शन क्वेरी का चयन करें

  3. स्थानीय mysql सर्वर को AWS में माइग्रेट करने का प्रयास कर रहा है

  4. MySQL:VARCHAR(255) के बजाय VARCHAR(20) का उपयोग क्यों करें?

  5. पहुंच अस्वीकृत; इस ऑपरेशन के लिए आपको (कम से कम एक) सुपर विशेषाधिकार की आवश्यकता है