mysql插入数据返回主键值_Mysql千万级别数据批量插入只需简单三步!
第一步:配置my.ini文件
文件中配置
bulk_insert_buffer_size=120M 或者更大
將insert語句的長度設(shè)為最大。
Max_allowed_packet=1M
Net_buffer_length=8k
保存
第二步:查看設(shè)置的參選有沒有生效.
Mysql > SHOW VARIABLES;
bulk_insert_buffer_size默認(rèn)是8M,我們要把它調(diào)成100M或百兆以上,也不要太大。下面看調(diào)整個好的,如下圖:
第三步:完成設(shè)置后,批量插入數(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") ,做試驗(yàn)時用的普通配置的電腦是每秒1000條批量插入速度,千萬條數(shù)據(jù)寫的速度也非常快,新版本PHP語言數(shù)據(jù)處理能力很強(qiáng)大。如果你的電腦或服務(wù)器性能高,你可以調(diào)節(jié)$arr數(shù)組決定你插入多少條數(shù)據(jù),靈活使用吧。
原作者:IT自由職業(yè)者
原文鏈接:Mysql千萬級別數(shù)據(jù)批量插入只需簡單三步
原出處:360圖書館
總結(jié)
以上是生活随笔為你收集整理的mysql插入数据返回主键值_Mysql千万级别数据批量插入只需简单三步!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电源空间辐射CDN余量低_EMI辐射整改
- 下一篇: 443 k8s配置开启nginx_SSL