第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何提高php中csv數(shù)據(jù)插入數(shù)據(jù)庫的速度?

如何提高php中csv數(shù)據(jù)插入數(shù)據(jù)庫的速度?

PHP
qq_花開花謝_0 2023-08-19 17:55:01
我編寫了這段代碼,允許讀取文件夾,根據(jù)文件名插入到不同的表中的 csv 文件的數(shù)據(jù)。文件處理完畢后,將被移動到另一個文件夾。我的代碼運行良好,但第二個 csv 文件長度超過 80 000 行,需要幾個小時才能集成到我的數(shù)據(jù)庫中。如何提高代碼的性能?我嘗試“加載本地數(shù)據(jù)”但沒有成功......<?phpinclude("../connexion.php");ini_set('max_execution_time', 54000);$timestamp= date("y-m-d H:i");$dir   = 'D:/xampp/htdocs/retail_BI/test/';$allFiles = scandir($dir);$dest = 'D:/xampp/htdocs/retail_BI/test/files/';   foreach($allFiles as $file) {        if (!in_array($file,array(".","..")))      {           $file = $dir.$file;        $filename = basename( $file );               if ( strpos( $filename, 'BI1_' ) === 0 ) {        if (($handle = fopen("$filename", "r")) !== false) {                        //To remove BOM in the fist cell              fseek($handle, 3);                        while (($data = fgetcsv($handle, 9000000, ";")) !== false) {                if (empty(array_filter($data))) {                    echo "not good";                continue;                }             $date = DateTime::createFromFormat('d/m/Y H:i:s A', $data[2]);            if ($date === false) {            break;            }            $date1 = $date->format('Y-m-d'); // 2020-07-07            $date2 = $date->format('Hi A'); // 1247 AM                          //database entry                             $query = "insert into dbo.Y2_Sales (storenumber, storename, date, time, TransRef, stylecode, color, size, quantity, unit_price, SalesExGST, cost, currency)                values('$data[0]', '$data[1]','$date1','$date2','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]', '$data[8]','$data[9]','$data[10]','$data[11]')";                   $stmt = $conn->query( $query );                     if (!$stmt) { echo $conn->error;}                                                          }                   }                
查看完整描述

1 回答

?
交互式愛情

TA貢獻1712條經(jīng)驗 獲得超3個贊

不要將每一行的數(shù)據(jù)插入數(shù)據(jù)庫,而是嘗試批量插入。

您始終可以進行批量插入,可以獲取 n(使用 1000)個條目并將其插入到表中。

這將減少數(shù)據(jù)庫調(diào)用,從而減少總時間。

對于 80k 條目,您也有可能超出內(nèi)存限制。

您可以使用 php 中的生成器來克服這個問題。?

雖然這是在 Laravel 中,但是從 csv 讀取的代碼是獨立的(使用生成器的代碼),并且可以在此處使用邏輯。


查看完整回答
反對 回復 2023-08-19
  • 1 回答
  • 0 關注
  • 167 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號