一条SQL语句批量插入数据到数据库:
(1)INSERT INTO 某表 VALUES(各个值),VALUES(各个值),.....;
(2)多个INSERT INTO VALUEES(各个值);以“;”隔开一同执行
以上两种方法Oracle和SQL Server都不支持,MySQL支持
对于Oracle数据库,可以使用以下方法:
(1)INSERT ALL INTO 表(字段) VALUES(值1) INTO 表(字段) VALUES (值2) INTO 表(字段) VALUES(值3) ....SELECT 1 FROM DUAL
(2) insert into 表(字段) (select ... from dual) union all (select ... from dual)
以上两种方法均试验过,可以批量插入。
此外,批量插入时,有个问题,那就是主键的生成。可以使用Oracle的序列:
创建一个序列(序列名的规则一般建议是以SEQ开头,然后下划线,后面跟你的表名,然后以_Identity结尾,用来表示这个序列是用在Id自增字段的序列),创建语句如下:
create sequence 序列名increment by 1 --每次增加几个,我这里是每次增加1
start with 1 --从1开始计数
nomaxvalue --不设置最大值
nocycle --一直累加,不循环
nocache; --不建缓冲区
在插入语句中调用:序列名.nextval 生成自增主键。
还有一种方法,就是自己在代码中使用UUID为每条数据记录生成唯一主键
让我们一起遨游在代码的海洋里!