需求讀取檔案,構造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執行出現異常,就會結束指令碼的執行。在有些場景下...