|
第一步:配置my.ini文件 文件中配置 bulk_insert_buffer_size=120M 或者更大 將insert語句的長度設為最大。 Max_allowed_packet=1M Net_buffer_length=8k 保存 第二步:查看設置的參選有沒有生效. Mysql > SHOW VARIABLES; bulk_insert_buffer_size默認是8M,我們要把它調(diào)成100M或百兆以上,也不要太大。下面看調(diào)整個好的,如下圖: 第三步:完成設置后,批量插入數(shù)據(jù)時使用多條模式。 INSERT INTO table (field1,field2,field3) VALUES ('a','b','c'), ('a','b','c'),('a','b','c'); 將以上Mysql插入模式用php語言字符串拼接SQL方法如下,你也可轉(zhuǎn)換Java,Python,Golang其它你用的最順手的語言,將方法轉(zhuǎn)換分享吧: /** * 多條數(shù)據(jù)同時轉(zhuǎn)化成插入SQL語句 * @ CreatBy:IT自由職業(yè)者 * @param string $table 表名 * @$arr_key是表字段名的key:$arr_key=array('field1','field2','field3') * @param array $arr是字段值 數(shù)組示例 arrat(('a','b','c'), ('bbc','bbb','caaa'),('add','bppp','cggg')) * @return string */ function multArray2Insert($table,$arr_key, $arr, $split = '`') { $arrValues = array(); if (empty($table) || !is_array($arr_key) || !is_array($arr)) { return false; } $sql = 'INSERT INTO %s( %s ) values %s '; foreach ($arr as $k => $v) { $arrValues[$k] = '''.implode('','',array_values($v)).'''; } $sql = sprintf($sql, $table, '{$split}' . implode('{$split} ,{$split}', $arr_key) . '{$split}', '(' . implode(') , (', array_values($arrValues)) . ')'); return $sql; } 以上方法調(diào)試過無誤的,頭條沒有代碼格式編輯器,所以發(fā)代碼圖。這段代碼的返回字符串結(jié)果是INSERT INTO table (field1,field2,field3) VALUES ('a','b','c'), ('a','b','c'),('a','b','c') ,做試驗時用的普通配置的電腦是每秒1000條批量插入速度,千萬條數(shù)據(jù)寫的速度也非??欤掳姹綪HP語言數(shù)據(jù)處理能力很強大。如果你的電腦或服務器性能高,你可以調(diào)節(jié)$arr數(shù)組決定你插入多少條數(shù)據(jù),靈活使用吧。 你可直接復制使用它,希望你能理解,若有問題請留言吧。 記得收藏這篇文章吧,我會不斷有精而巧的技術(shù)爆點給大家分享的,請關(guān)注'IT自由職者'。 |
|
|