首页

文章

Oracle中插入数据

发布网友 发布时间:2022-04-20 01:38

我来回答

5个回答

热心网友 时间:2022-04-09 21:21

前提:在做insert数据之前,如果是非生产环境,请将表的索引和约束去掉,待insert完成后再建索引和约束。

insert into tab1 select * from tab2; commit;

这是最基础的insert语句,我们把tab2表中的数据insert到tab1表中。根据经验,千万级的数据可在1小时内完成。但是该方法产生的arch会非常快,需要关注归档的产生量,及时启动备份软件,避免arch目录撑爆。

alter table tab1 nologging; 

insert /*+ append */ into tab1 select * from tab2; 

commit; alter table tab1 logging;

该方法会使得产生arch大大减少,并且在一定程度上提高时间,根据经验,千万级的数据可在45分钟内完成。但是请注意,该方法适合单进程的串行方式,如果当有多个进程同时运行时,后发起的进程会有enqueue的等待。注意此方法千万不能dataguard上用,不过要是在database已经force logging那也是没有问题的。

insert into tab1 select /*+ parallel */ * from tab2; commit;

对于select之后的语句是全表扫描的情况,我们可以加parallel的hint来提高其并发,这里需要注意的是最大并发度受到初始化参数parallel_max_servers的*,并发的进程可以通过v$px_session查看,或者ps -ef |grep ora_p查看。

alter session enable parallel dml; 

insert /*+ parallel */ into tab1 select * from tab2; commit;

其他方法:

并发的insert,尚未比较和方法2哪个效率更高(偶估计是方法2快),有测试过的朋友欢迎补充。

insert into tab1 select * from tab2 partition (p1); 

insert into tab1 select * from tab2 partition (p2); 

insert into tab1 select * from tab2 partition (p3); 

insert into tab1 select * from tab2 partition (p4);

对于分区表可以利用tab1进行多个进程的并发insert,分区越多,可以启动的进程越多。我曾经试过insert 2.6亿行记录的一个表,8个分区,8个进程,如果用方法2,单个进程完成可能要40分钟,但是由于是有8个分区8个进程,后发进程有enqueue,所以因此需要的时间为40分钟×8;但是如果用方法5,虽然单个进程需要110分钟,但是由于能够并发进程执行,所以总共需要的时间就约为110分钟了。

DECLARE TYPE dtarray IS TABLE OF VARCHAR2(20) 

INDEX BY BINARY_INTEGER; 

v_col1 dtarray; v_col2 dtarray; v_col3 dtarray; 

BEGIN SELECT col1, col2, col3 BULK COLLECT INTO v_col1, v_col2, v_col3 

FROM tab2; 

FORALL i IN 1 .. v_col1.COUNT insert into tab1 

WHERE tab1.col1 = v_col1; 

END;

用批量绑定(bulk binding)的方式。当循环执行一个绑定变量的sql语句时候,在PL/SQL 和SQL引擎(engines)中,会发生大量的上下文切换(context switches)。使用bulk binding,能将数据批量的从plsql引擎传到sql引擎,从而减少上下文切换过程,提升效率。该方法比较适合于在线处理,不必停机。

sqlplus -s user/pwd< runlog.txt set copycommit 2; 

set arraysize 5000; 

copy from user/pwd@sid - to user/pwd@sid - insert tab1 using 

select * from tab2; exit EOF

用copy的方法进行插入,注意此处insert没有into关键字。该方法的好处是可以设置copycommit和arrarysize来一起控制commit的频率,上面的方法是每10000行commit一次。

热心网友 时间:2022-04-09 22:39

oracle数据库插入数据

单行插入:insert into 表名(列名,列名2,列名3,列名) values(列名插入的数据,列名2插入的数,列名3插入的数据,列名4插入的数据);

示例:给员工表插入数据(员工编号编号为1001姓名为tom。薪水为3000部门为10)的插入记录如下:

insert into emp(empno,ename,sal,deptno) values(1001,'Tom',3000,10);


一次插入多条数据:create table emp10 as select * from emp where 1=2;

示例:一次性将emp中,所有10号部门的员工插入到emp10中:

insert into emp10 select * from emp where deptno=10;



热心网友 时间:2022-04-10 00:13

如果ID是用trigger实现增长的
declare v_id varchar2(10);
begin
insert into oracle(name,age,sex)
values('name','10','M')
returning id into v_id;
dbms_output.put_line(v_id);
end;

或者

可以创建一个sequence应用于该字段,比如已有sequence id_s,则可以用如下命令插入数据:
insert into table_name values(id_s.next_value,name_value,age_value,sex_value);

基本的sql语句
insert into student(id,name,age) values(id_s.next_value,'小米',20);
insert into 表名 values (列的值);

热心网友 时间:2022-04-10 02:05

举个例子
oracle 中有表table1 如下字段 id name age sex 现在我要向表中插入数据

insert into table1(id,name,age,sex) values ('1','张三',18,'男');
commit;
这样就可以了

热心网友 时间:2022-04-10 04:13

insert into 表名 values (列的值);
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 怎么在oracle数据库插入数据 苹果手机冷天容易自动关机为什么 苹果手机天冷自动关机怎么解决 我是一个初学者,如何向oracle数据库表中插入数据 刚采的羊肚菌怎样保存? 我苹果手机一到冬天就变慢了有什么办法可以解决吗? 苹果手机都说信号不好而且冬天容易冻了关机,还发烫... 新鲜羊肚菌怎么保存 为什么苹果手机天冷就会自动关机? 干了的羊肚菌能存放多久 羊肚菌怎么保存? 如何储存羊肚菌? iphone5天冷通话时易无信号 新鲜羊肚菌储存方法 天冷苹果手机屏幕失灵 干羊肚菌如何储存 为什么苹果6plus手机遇到低温天气 手机会显示无服务? 羊肚菌怎么保鲜??? 气温一冷手机苹果就无服务了怎么回事 新鲜羊肚菌怎么存放? 请问怎样可以在ORACLE数据库中插入多条数据? 怎么往 Access / Oracle 数据库里一次性插入多... 使用ORACLE数据库,怎样插入一条数据 Oracle数据库数据插入问题 怎么插入大量数据到Oracle数据库中 在oracle中怎么将查询到的数据插入到另一个表中 如何往Oracle数据库索引表中插入数据 oracle数据库中,怎么插入一条数据 如何在oracle数据库中的表里批量插入记录 Oracle数据库,一条SQL语句插入多行数据? oracle如何创建表以及向表里面添加数据 如何在oracle数据库的表中插入数据 如何向Oracle数据库表中进行大数据量的插入并提交? 如何在oracle数据库中查找最后一条插入的数据 如何将oracle数据库中的数据如何导入到sqlserver 圆柱体的底面半径怎么求? 圆柱体底面半径怎么求 圆柱底面半径怎么算? 把一个圆柱体侧面展开,量得长是6.28厘米,宽是3.1... 圆柱的底面半径是2cm高是4cm展开侧面展开后得到长...
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com