insert多条语句,用insert语句向表中添加多条记录
各位老铁们,大家好,今天由我来为大家分享insert多条语句,以及用insert语句向表中添加多条记录的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
如何一次插入多条记录的SQL语句
在使用SQL数据库的时候,我们也许会需要一次像数据库中添加多条记录,那么我们可以使用SQL语句来实现,该语句具体如下:
--添加一条记录
INSERT INTO tableName(col1,col2,col3) VALUES(1,2,3)
--添加多条记录
INSERT INTO tableName(col1,col2,col3)
SELECT 3,4,5
UNION ALL
SELECT 6,7,8
--从另外的一张表中读取多条数据添加到新表中
INSERT INTO tableName(col1,col2,col3)
SELECT a,b,c FROM tableA
--从其他的多张表中读取数据添加到新表中
INSERT INTO tableName(col1,col2,col3)
SELECT a,b,c FROM tableA WHERE a=1
UNION ALL
SELECT a,b,c FROM tableB WHERE a=2
上边代码中的into都可以省略!
上边代码中的union all如果换成union,则相同记录只插入一次,不会重复插入。
另外一种方法是SQL Server2008特有的,所以,如果你不是SQL Server2008,就不能使用这种方法了。
INSERT INTO MyTable(ID,NAME)VALUES(7,'003'),(8,'004'),(9,'005')
create table [TEST]
(
[NUM_ID] int primary key
)
go
declare@temp int
set@temp=1;
while@temp<=1000000
begin
insert into [TEST]([NUM_ID]) values(@temp)
set@temp=@temp+1;
end
go
----------------------------------------------------------
--试试下面的方法
--2005
DECLARE@n AS BIGINT;
SET@n= 1000000;
WITH Base AS
(
SELECT 1 AS n
UNION ALL
SELECT n+ 1 FROM Base WHERE n< CEILING(SQRT(@n))
),
Expand AS
(
SELECT 1 AS c
FROM Base AS B1, Base AS B2
),
Nums AS
(
SELECT ROW_NUMBER() OVER(ORDER BY c) AS n
FROM Expand
)
SELECT n FROM Nums WHERE n<=@n
OPTION(MAXRECURSION 0);
--2
CREATE FUNCTION dbo.fn_nums(@n AS BIGINT) RETURNS TABLE
AS
RETURN
WITH
L0 AS(SELECT 1 AS c UNION ALL SELECT 1),
L1 AS(SELECT 1 AS c FROM L0 AS A, L0 AS B),
L2 AS(SELECT 1 AS c FROM L1 AS A, L1 AS B),
L3 AS(SELECT 1 AS c FROM L2 AS A, L2 AS B),
L4 AS(SELECT 1 AS c FROM L3 AS A, L3 AS B),
L5 AS(SELECT 1 AS c FROM L4 AS A, L4 AS B),
Nums AS(SELECT ROW_NUMBER() OVER(ORDER BY c) AS n FROM L5)
SELECT n FROM Nums WHERE n<=@n;
GO
--2000这个会比前两个慢,但是前两个2000不能用
CREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY);
DECLARE@max AS INT,@rc AS INT;
SET@max= 1000000;
SET@rc= 1;
INSERT INTO Nums VALUES(1);
WHILE@rc* 2<=@max
BEGIN
INSERT INTO dbo.Nums SELECT n+@rc FROM dbo.Nums;
SET@rc=@rc* 2;
END
INSERT INTO dbo.Nums
SELECT n+@rc FROM dbo.Nums WHERE n+@rc<=@max;
--------------------------------------------------------------------------------------------------------
怎样在sql中用insert语句往表中插入多行
如果数据很多的话建议可以用别的方法特别是数据量比较多的时候
ORACLE有一个SQLLODER功能
1.生成百万级的sql,保存SQL文件为getobject.sql
select a.owner||',"'||a.object_name||'",'||a.object_id||','||to_char(a.created,'yyyy-mm-dd hh24:mi:ss')||','||a.status
from dba_objects a,(select rownum from dual connect by rownum<= 20);
2.sql数据转换成数据文件,保存脚本为call.sql
set echo off
set term off
set trimout on
set trimspool on
set pagesize 0
set feedback off
set heading off
spool c:\getobject.csv
@c:\getobject.sql
set spool off
set heading on
set feedback on
set trimspool off
set trimout off
set term on
set echo on
注释:
set colsep'';//-域输出分隔符
set echo off;//显示start启动的脚本中的每个sql命令,缺省为on
set echo on//设置运行命令是是否显示语句
set feedback on;//设置显示“已选择XX行”
set feedback off;//回显本次sql命令处理的记录条数,缺省为on
set heading off;//输出域标题,缺省为on
set pagesize 0;//输出每页行数,缺省为24,为了避免分页,可设定为0。
set linesize 80;//输出一行字符个数,缺省为80
set numwidth 12;//输出number类型域长度,缺省为10
set termout off;//显示脚本中的命令的执行结果,缺省为on
set trimout on;//去除标准输出每行的拖尾空格,缺省为off
set trimspool on;//去除重定向(spool)输出每行的拖尾空格,缺省为off
set serveroutput on;//设置允许显示输出类似dbms_output
set timing on;//设置显示“已用时间:XXXX”
set autotrace on-;//设置允许对执行的sql进行分析
set verify off//可以关闭和打开提示确认信息old 1和new 1的显示.
3.运行call.sql生成数据文件
sqlplus hxadmin/secret as sysdba;
@c:\call.sql
4.初始化环境,创建导入表OBjects
create table OBJECTS
(
OWNER VARCHAR2(50),
OBJECT_NAME VARCHAR2(50),
OBJECT_ID NUMBER,
STATUS VARCHAR2(10),
CREATED DATE
)
5.生成导入控制文件,保存控制文件为ldr_object.ctl
LOAD DATA
INFILE getobject.csv
TRUNCATE INTO TABLE OBJECTS
FIELDS TERMINATED BY"," OPTIONALLY ENCLOSED BY'"' TRAILING NULLCOLS
(OWNER,
OBJECT_NAME,
OBJECT_ID,
CREATED date'yyyy-mm-dd hh24:mi:ss',
STATUS)
6.执行sqlldr命令
C:> sqlldr hxadmin/secret control= ldr_object.ctl direct= true
7.查看ldr_object.log日志文件
这个例子是我自己做的一个100W行的数据插入也只要10几秒。希望你能用到。
python怎么用insert函数插入多个值
一条insert语句批量插入多条记录
常见的insert语句,向数据库中,一条语句只能插入一条数据:
insertintopersons
(id_p,lastname,firstName,city)
values(204,'haha','deng','shenzhen');
(如上,仅插入了一条记录)
怎样一次insert插入多条记录呢?
使用示例:
insertintopersons
(id_p,lastname,firstName,city)
values
(200,'haha','deng','shenzhen'),
(201,'haha2','deng','GD'),
(202,'haha3','deng','Beijing');
这样就批量插入数据了,遵循这样的语法,就可以批量插入数据了。
执行成功,截图:

据说,在程序开发中,一次插入多条数据,比逐次一条一条的插入数据,效率高很多
所以在程序开发的时候,使用此批量插入,也是比较不错的。
此语句在MySQL5,postgreSQL9.3执行通过。
OK,关于insert多条语句和用insert语句向表中添加多条记录的内容到此结束了,希望对大家有所帮助。