Oracle 批量插入数据怎么做

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 批量插入数据怎么做相关的知识,希望对你有一定的参考价值。

oracle批量插入数据使用sqlldr。
首先将要导入的excel文件另存为csv格式(默认逗号间隔,另存为csv,不只是改后缀名)
然后用sqlldr导入。
sqlldr的参数很多,简单的几个就可以了:
建一个控制文件control.txt:
load data
infile \'f:\\test.csv\'
into table test1
(id char terminated by \',\',
name char terminated by \',\',
height char terminated by \',\',
birth char terminated by whitespace)

----这里根据需要,修改数据文件的名字和路径。括号里面的字段名和字段数也根据实际情况修改。由于保存的是csv,字段间以逗号隔开,因此控制文件里定义最后一个字段以whitespace来分隔,其它的用\',\'
然后使用sql*loader:
sqlldr userid=USERNAME/PASSWORD@XXXX control=f:\\control.txt log=f:\\test.log bad=f:\\testbad.csv
userid后跟用户名密码,@后的是网络服务名,需要在客户端的tnsnames.ora文件里定义。control后的值是刚刚建的控制文件的路径,日志将生成在log参数指定的位置上,如果有记录没有导入成功,这些记录会放置在bad后指定的文件里。
参考技术A 如果是文本文件(不一定是纯文本,execl也可以,另存为文本就可以,只要注意一下分隔符号就可以了),那么sqlloader导入,只要参数设置对了,这个应该是比较快的。
如果是从其他表插入,而且数据量很大,那么就写脚本分批insert,commit;
当然用其他工具也可以,比如用plsql developer的导入功能,或者复制。
关键看是什么类型的数据。本回答被提问者采纳
参考技术B 用SQLLoader进行上传数据,1万条数据耗时8秒。

mybatis怎么给oracle批量插入数据

参考技术A <insert id="addTMsgSmsinfoForBatch" parameterType="java.util.List">
<selectKey resultType="long" keyProperty="id" order="BEFORE">
SELECT T_MSG_SMSINFO_SEQ.NEXTVAL AS id FROM dual
</selectKey>
INSERT INTO T_MSG_SMSINFO ( <include refid="columns_auotmsgsending" /> ) VALUES
<foreach collection="list" item="item" index="index"
separator=",">
( #item.id,#item.ecid,#item.userid,#item.sendermsisdn,#item.receiverinfo,
#item.totalrec,#item.smsorigin,#item.originid,#item.smscontent,#item.smstype,
#item.scheduletime,#item.auditstatus,#item.inserttime,#item.updatetime
)
</foreach>
</insert>

就是在:
<selectKey resultType="long" keyProperty="id" order="BEFORE">
SELECT T_MSG_SMSINFO_SEQ.NEXTVAL AS id FROM dual
</selectKey>本回答被提问者采纳

以上是关于Oracle 批量插入数据怎么做的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 批量插入数据怎么做

Oracle 批量插入数据怎么做

oracle的批量插入和mysql的批量插入不一致,mybatis要怎么做兼容

mybatis怎么给oracle批量插入数据

Mybatis中Oracle和Mysql批量插入的区别

Mybatis中Oracle和Mysql批量插入的区别