2014-04-08 11:51:27 lishuai133 阅读数 1149

今天,在项目中碰到了,需要把大量数据插入到mysql数据库中,发现程序在数据插入环节消耗了大量的资源,导致运行时间超时。

解决方法:mysql批量出入数据(一条SQL语句插入多条数据)

代码如下:

INSERT INTO users(name, age)  VALUES(‘php’, 25), (‘mysql’, 50), (‘大数据量’, 600);

向users表中连续插入了3条记录。值得注意的是,上面的INSERT语句中的VALUES后必须每一条记录的值放到一对(…)中,中间使用”,”分割。

在插入环节这样操作后,执行时间缩短了很多。

2018-09-29 10:59:00 weixin_34111819 阅读数 52
    /*public function index()
    {
        set_time_limit(0);

        $time1 = microtime(true);

        for ($i=200001; $i<300000; $i++) {

            $sql = "insert into think_test(name) values ($i)";
            Db::query($sql);

        }

        $time2 = microtime(true);

        echo $time1-$time2; //42.355000019073s
    }*/

    public function index()
    {
        set_time_limit(0);

        $time1 = microtime(true);

        $sql = "insert into think_test(name) values ";
        for ($i=0; $i<1000000; $i++) {

            $sql .= "($i),";
        } //insert into think_test(name) values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),

        //insert into think_test(name) values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)
        $sql = substr($sql, 0, -1);

        Db::query($sql);

        $time2 = microtime(true);

        echo $time2-$time1; //5s
    }

    /**
     *
     * @DESC: 循环插入1000000 条数据 只需要5s左右 批量插入
     *
     * @author: HX
     * @Time: 2018/9/26   12:00
     *
     */
    public function index2()
    {
        set_time_limit(0);

        $time1 = microtime(true);

        //循环插入一百万
        for ($i=10000; $i <10010000 ; $i+=10000) {
            # code...
            $j = $i-10000;
            $sql = "insert into think_test(name) values ";
            for ($y=$j; $y<$i; $y++) {

                $sql .= "($y),";
            }
            $sql = substr($sql, 0, -1);

            Db::query($sql);
            unset($sql);
        }

        $time2 = microtime(true);

        echo $time2-$time1;
    }

 

转载于:https://my.oschina.net/u/2494575/blog/2221367

2017-02-16 23:45:07 jacke121 阅读数 4118

<?php
$dbh = mysql_connect('localhost','root','root');
mysql_select_db('pkbk');
$query = "insert intov9_admin_role_priv(roleid, m, c, a, `data`, siteid) values (12, 'huiben','huiben', 'hbprop_add', '', 1)";
$res = mysql_query($query, $dbh);

//"获取刚才插入的id,表需要设置主键自增"

echo "ID of last inserted record is: " .mysql_insert_id();
$query = "select max(roleid) fromv9_admin_role_priv";
$res = mysql_query($query, $dbh);
$err = mysql_error();
if($err){
    echo "发生错误,请通知管理员";
}
$row = mysql_fetch_row($res);
echo "未来您使用的号码为:".$row[0];
?>

 

匹克系统应用:

  $query = " INSERT INTOpkbk.v9_member (phpssouid, username, password, encrypt, nickname, regdate,lastdate, regip, lastip, loginnum, biaoshi, planid, email, groupid, areaid,amount, point, modelid, message, islock, vip, overduedate, siteid, connectid,`from`, mobile, yey, yeybj, sleeptime, waketime, cardno, zentime, zencount,is_js, bsount)".
"VALUES (1, 'lbg','9f575f22246a1a5fb38e1846bb0ec964', 'pTseba', '', 1384397338, 1403544894,'221.199.6.231', '118.112.20.103', 0, '', 0, 'nxnet123@qq.com', 2, 0, 0, 0, 10,0, 0, 0, 0, 1, 'A74EECDFA5A22C81C05ED49E7CF9224D', 'qq', '', '', '', 0, 0, '',0, 0, 0, 0)";
       $number=$mydb->sql_query($query);
        echo "ID of last inserted recordis: ".mysql_insert_id();

 

2019-12-05 09:59:57 qq_27517377 阅读数 26

温馨建议:

oracle数据库的表名称和字段名称用大写,不然你要注意下面这些问题,小写的表名称一定要用双引号括起来,字段名称要用双引号括起来,字段的值用单引号括起来

php pdo 操作oracle类点击:php pdo oracle 类

 

php插入数据到oracle,跟php插入数据到mysql有点不一样哦!php在insert数据到oracle必须严格遵守规则:

表名,字段名必须用双引号括起来,字段非数值的必须用单引号,数值的可以不用单引号。

例子:books表

           id是number类型,

           name是varchar2类型

本例子php插入数据到oracle用的是

          oracle 18c win 64位

          php 7.2 版本 64位

温馨提示:在php 连接oracle的时候还要记住,php版本一定要跟oracle版本一样的,并且电脑上必须安装同样版本的oracle软件,不然oci8扩展是无法打开的哦!

1.INSERT  INTO  "books" ("id","name") values (10,"10bbb")

错 ORA-00984: 列在此处不允许  varchar2的字段必须用单引号

 

2.INSERT  INTO  'books' ("id","name") values (10,'10bbb')

错 ORA-00903: 表名无效  books表必须用双引号括起来
3.INSERT  INTO  "books" (id,name) values (10,'10bbb')

错 ORA-00984: 列在此处不允许 列必须用双引号括起来
4.INSERT  INTO  "books" ('id','name') values (10,"10bbb")

错 ORA-00928: 缺失 SELECT 关键字 插入的列必须用双引号括起来,单引号不行,
   并且name字段的值10bbb必须用单引号括起来,双引号不行。
5.INSERT  INTO  "books" ("id","name") values (10,'10bbb')

正确 表明用双引号,字段用双引号,字段name是varchar2用单引号括起来,id是number可以不用单引号


6.INSERT  INTO  "books" ("id","name") values ('11','11ccc')

正确 表明用双引号,字段用双引号,字段name是varchar2用单引号括起来,id是number可以不用单引号

如果当时创建表的时候表名称和字段名称都用大写的话就不用这么麻烦了:

直接 下面这样就行了

SELECT * FROM BOOKS 

INSERT INTO BOOKS  (NAME) VALUES (‘张三’)

所以小伙伴们用php插入数据到oracle的时候一定要严格遵守规则哦,表明用双引号,字段用双引号,字段的值用单引号!!!

2018-08-28 16:54:17 appAndWxy 阅读数 115

sql插入大量数据
第一种 使用循环一条一条插入

    foreach($list as $key=>&$value){
        if($key != 0){
            $insertidSql .= ',';
        }

        $insertidSql .= '("'.$uid.'","'.$new_id.'")';

        $result = query('INSERT INTO detail (uid,new_id,) VALUES '.$insertidSql.';');
    }

第二种 插入 一条

    foreach ($base_arrey as $key => $value) {

        // 一条一次
        $data['type'] = '1';
        $data['id'] = $value['id'];

        $a->add($data); 

    }

第三种 一次插入多条

    $count_land = count($base_arrey);
    foreach ($base_arrey as $key => $value) {

        if($sql_data != ''){
            $sql_data .= ',';
        }
        $sql_data .= '("1","'.$value['id'].'")';

        if($key != 0 && $key % 100 == 0 || $key == $count_land - 1){

            $insert_sql = "INSERT INTO table_name (id,type) VALUES " . $sql_data;

            $result = query($insert_sql);

            $sql_data = '';

        }
    }

PHP插入新数据

阅读数 4

没有更多推荐了,返回首页