php 讀取檔案,批量構造sql語句寫入資料庫

2022-06-09 08:03:11 字數 2255 閱讀 6641

需求讀取檔案,構造sql,批量寫入資料庫,批量是構建設定 $num 值的大小進行批量構建sql語句

test.txt 檔案內容為

123

4567

8910

<?php

class batchinsertcontroller

$i = 0;}}

}}

protected function buildsql($arr)

values ";

foreach ($arr as $key => $value) }}

return $sql;

}}$a = new batchinsertcontroller();

$a->batchinsert();

目標實現:

讀取檔案三行內容構建一條sql語句,然後寫入資料庫,那麼陣列的大小應該也應該是3個為一組

執行的結果為:

array

( [0] => 1

[1] => 2

[2] => 3

[3] => 4

[4] => 5

[5] => 6

[6] => 7

[7] => 8

[8] => 9

)

陣列為什麼是這麼大呢?不應該是3個一組麼,應該每次進來初始化的

<?php

class batchinsertcontroller

$i = 0;}}

}}

protected function buildsql($arr)

values ";

foreach ($arr as $key => $value) }}

return $sql;

}}$a = new batchinsertcontroller();

$a->batchinsert();

這次就對了,$arr 陣列沒有被unset 掉,結果一直往陣列裡面寫入元素,這也是會造成記憶體洩漏的地方

array

( [0] => 1

[1] => 2

[2] => 3

)insert into test.t values ('column1','1','column3'),('column1','2','column3'),('column1','3','column3')3

array

( [0] => 4

[1] => 5

[2] => 6

)insert into test.t values ('column1','4','column3'),('column1','5','column3'),('column1','6','column3')3

array

( [0] => 7

[1] => 8

[2] => 9

)insert into test.t values ('column1','7','column3'),('column1','8','column3'),('column1','9','column3')

這就完了,並沒有,檔案中是10條記錄,你這裡只處理了9條,剩下一條不能丟掉呀

最後執行完批量以後,如果$arr 陣列中還有元素,將剩餘元素也寫入到資料庫中

<?php

class batchinsertcontroller

$i = 0;}}

}if (!empty($arr)) }}

protected function buildsql($arr)

values ";

foreach ($arr as $key => $value) }}

return $sql;

}}$a = new batchinsertcontroller();

$a->batchinsert();

總結:

以前一直覺得php簡單,發現自己用php寫個小程式bug都很多,原來不是php簡單,是用php的人"簡單",推而廣之,無論你用那種語言,如果不持續學習和主動學習,你還是寫不出好的**(優雅,可擴充套件,可維護,可讀性高)

越來越明白基礎紮實是有多麼重要了,有紮實的資料結構和演算法知識,才能更好更快的解決業務中遇到的問題

寫**前要思考和設計,然後要動手寫,寫完以後看下有沒有可以改進和優化的,這個過程沒有捷徑,只有不斷練習和學習,才能有所長進

Oracle 從SQL檔案批量匯入資料

進入dos介面。進入sql檔案目錄。在命令提示下執行sqlplus,c sql sqlplus user name password net service name 指定sql執行日誌檔案,日誌檔名任意,但必須以log為字尾名 sql spool e temp a.log 建立批量執行檔案。如果要...

php 獲取目錄下檔案 批量改名 批量插入資料庫

今天要建立乙個足球隊伍的字典,上百條呀,手動忒麻煩,做了個小工具,實現將某個資料夾下的所有檔案重新命名,並且自動生成字典檔案。同時可以插入資料庫。如下 require once common db connect.class.php 利用php目錄和檔案函式遍歷使用者給出目錄的所有的檔案和資料夾,修...

hive 批量執行sql指令碼檔案 跳過異常語句

應用場景 hive執行sql的方式很多,在需要批量執行sql的場景下就需要使用到hive 命令 或beeline命令。使用方式hive f a.sql這個命令會執行a.sql裡面的sql命令,每個命令以分號結束,但這種方式有個缺陷,就是中間有乙個sql執行出現異常,就會結束指令碼的執行。在有些場景下...