-
है
fgets()
इसके लिए उपयोग करना सबसे अच्छा है? इसे करने का यह एक अच्छा तरीका है। एक अन्य विकल्प पूरी फ़ाइल कोfile()
. के साथ एक सरणी में पढ़ना है , फिरforeach()
. के साथ सरणी पर लूप करें । -
क्या मुझे कॉलबैक शामिल करने की आवश्यकता है? नहीं। फ़ाइल से पंक्तियों के प्रत्येक बैच को पढ़ने के बाद बस क्वेरी निष्पादित करें।
-
कहां से शुरू करें? जब काउंटर बैच आकार तक पहुँच जाता है, तो क्वेरी निष्पादित करें। फिर काउंटर को वापस
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);
}