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

csv पर फ़ाइल पॉइंटर्स के साथ कार्य करना

  1. है fgets() इसके लिए उपयोग करना सबसे अच्छा है? इसे करने का यह एक अच्छा तरीका है। एक अन्य विकल्प पूरी फ़ाइल को file() . के साथ एक सरणी में पढ़ना है , फिर foreach() . के साथ सरणी पर लूप करें ।

  2. क्या मुझे कॉलबैक शामिल करने की आवश्यकता है? नहीं। फ़ाइल से पंक्तियों के प्रत्येक बैच को पढ़ने के बाद बस क्वेरी निष्पादित करें।

  3. कहां से शुरू करें? जब काउंटर बैच आकार तक पहुँच जाता है, तो क्वेरी निष्पादित करें। फिर काउंटर को वापस 0 . पर सेट करें और क्वेरी स्ट्रिंग को प्रारंभिक मान पर वापस सेट करें। अंत में, लूप के अंत में आपको शेष मानों के साथ क्वेरी करने की आवश्यकता होगी (जब तक कि फ़ाइल का आकार बैच आकार का एक सटीक गुणक न हो, उस स्थिति में कुछ भी शेष नहीं होगा)।

$batch_size = 100;
$counter = 0;

//instead of executing query one by one,
//let us prepare 1 SQL query that will insert all values from the batch

$sql_prefix ="INSERT INTO workorderstest(id,parentid,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10) VALUES ";
$values = "";

while (($line = fgets($handle)) !== false) {
    $values .= "($line),";
    $counter++;
    if ($counter == $batch_size) {
        $values = substr($values, 0, strlen($values) - 1);
        $conn->query($sql_prefix . $values) or die($conn->error);
        $counter = 0;
        $values ="";
    }
}
if ($counter > 0) { // Execute the last batch
    $values = substr($values, 0, strlen($values) - 1);
    $conn->query($sql_prefix . $values) or die($conn->error);
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:खोज/प्रतिस्थापन लेकिन केवल पहली बार कोई मान रिकॉर्ड में प्रकट होता है

  2. MAX (तारीख) द्वारा कैसे चुनें?

  3. mysqli और php . का उपयोग करने में कॉलम का योग

  4. घातक त्रुटि:प्रकार की वस्तु का उपयोग नहीं कर सकता stdClass सरणी के रूप में

  5. MySqlCommand के पैरामीटर के रूप में तालिका कैसे पास करें?