批量insert语句(批量执行insert语句)
大家好,今天给各位分享批量insert语句的一些知识,其中也会对批量执行insert语句进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
SQL批量插入数据
一、针对批量插入数据,如果量不是太多,可以多条SQL语句运行就可以了,
类似下面的语句,当然可以使用excel编辑后,复制到查询器中运行,
insert into table(a,b) values('1','a')
insert into table(a,b) values('2','b')
insert into table(a,b) values('3','c')
二、大量数批量插入,即数据表的移植,数据备份转换之类的,就需要工具,比如MSSQL的DTS工具,pb的数据通道等等。这里介绍一下 DTS工具。
1、在SQL安装目录下开启导入和导出数据,即DTS。
2、选择一个批量的数据,可以是表,也可以是带分隔符的文件,或excel文档之类,如图中选择,导入的格式
3、选择导入的目标
4、选择导入方式
5.具体的导入规则
怎样在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几秒。希望你能用到。
请教SQL批量更新语句
SQL批量更新语句
create table a1(
id1 int primary key,
va1 varchar(20)
)
drop table b2
create table b2(
id2 int primary key,
va2 varchar(20)
)
--创建一张中间表来储存被删除的id
create table idrecord
(
id int
)
--a1插入测试数据
insert into a1 values(1,'地理');
insert into a1 values(2,'物理');
--b2插入测试数据
insert into b2 values(1,'数学');
insert into b2 values(3,'英语');
select* from a1
select* from b2
--如果A1存在ID与B1相同的数据,则更新,由于主键不能重复插入,所以先删除数据再进行添加,
--记录被删除的id
delete from idrecord
insert into idrecord select id1 from a1 where id1 in(select id2 from b2)
--先删除在 a1 ID与 b2相同的数据
delete from a1 where id1 in(select id2 from b2)
insert into a1 select* from b2 where id2 in(select* from idrecord)
--如果A1不存在ID与B1相同的数据,则添加B1中的数据到A1中
insert into A1 select* from b2 where id2 not in(select id1 from a1)
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!