重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、采用insert into values 语句插入一条,写很多条语句即可多条数据,这种主要针对于离散值以及一些基础信息的录入,如:insert into test(xh,mc) values('123','测试');
创新互联公司主要为客户提供服务项目涵盖了网页视觉设计、VI标志设计、成都全网营销推广、网站程序开发、HTML5响应式网站建设公司、手机网站开发、微商城、网站托管及成都网站改版、WEB系统开发、域名注册、国内外服务器租用、视频、平面设计、SEO优化排名。设计、前端、后端三个建站步骤的完善服务体系。一人跟踪测试的建站服务标准。已经为成都主动防护网行业客户提供了网站维护服务。
如果插入的数据有规律,可利用for、loop循环插入,主要用于批量生成测试数据
begin
for i in 1 .. 100 loop
insert into test(xh,mc) values(i||'','测试');
end loop;
end ;。
2、采用insert into selct from 语句来一次性插入一个集合,这种主要依据于要插入的数据源已经存储于数据库对象中,或者利用dual虚表来构造数据,经过加工后写入一个集合。
insert into test (xh,mx) select '123','测试' from dual;
3、采用plsql等工具、或者oracle的imp、impdp命令来导入,这种主要用数据库与数据库之间的大批量数据导入,导入的数据格式为plsql的pde、oracle的dmp等。dmp文件可使用
table_exists_action参数控制导入动作:replace替换原表,truncate清除原表数据再导入,append增量导入数据,当然impdp数据泵的导入要依赖于directory路径。
impdp 用户名/密码 dumpfile=123.dmp logfile=123.log directory=imp_dir tables=test table_exists_action=append
4、使用excel文件直接拷贝。这种主要用于要写入的数据已是excel文件或者行列分明的其它格式文件,每一列的值和表结构相对应,可直接打开表的行级锁,把数据拷贝进入。
打开行级锁方法:
select t.*,rowid from 表名 t where 1=2;
select * from 表名 where 1=2 for update;
直接把excel数据拷贝到表里
Oracle批量插入数据可用PL/SQL的命令窗口执行。
使用工具:PL/SQL
步骤:
1、登录PL/SQL到指定数据库。
2、登录后,点击左上方“纸片”状图标,然后选择“Command Window”选项,进入命令窗口。
3、然后在本地电脑编写insert(即插入语句),每句以逗号分隔。如图:
4、然后为文件起名字,以.sql为文件后缀,如“执行.sql”,保存到指定路径,如c盘data目录下。
5、在打开的命令窗口下执行如下语句:
@c:\data\执行.sql
其中“@”为必写内容,“c:\data\”为sql文件保存路径,“执行.sql”为要执行的脚本文件名。
6、敲击回车键执行,执行后会有成功提示,如图:
7、最后去目标表查询数据,检验结果成功。其中如图的四条为新插入的数据。
需要生成的SQL
insert into TMP_UPSTATE_CASEKEY values('TMP0000001', 1, sysdate);
存储过程实现
create or replace procedure proc_casekey_upstate
as
casekey char(14);
begin
for i in 1..10000000 loop
casekey := 'TMP'||lpad(i,7,0); -- TMP0000001
insert into TMP_UPSTATE_CASEKEY values(casekey, 1, sysdate);
end loop;
commit;
end;
begin
proc_casekey_upstate();
end;
测试发现生成一千万条数据用了14分钟左右,性能还是可以了,如果先去掉TMP_NUM_STATUS_ID的外键估计更快。
或者:
insert into TMP_UPSTATE_CASEKEY select 'TMP'||LPAD(rownum,7,0),1,sysdate from dual connect by level = 1000000;
可用rownum来查询。
如emp表中有如下数据:
现在要求只查5行数据,可用如下语句:
1
select * from emp where rownum=5;
结果如下:
你好!
简单点的方法:
在表中增加一个列,为自增序列,然后执行:
update 表 set 自增序列=rownum;
这样快速,还不会出错。
您好,提问者:
1、使用变量替换,比如:
insert into XX values(id, 'name');
2、把sql写入文本中,就是insert into ....,关闭oracle的反馈
set feedback off; -- 关闭oracle的自动反馈
@D:\insert.txt
-- 或者
start D:\insert.txt