1000W INSERT语句,快速插入ORACLE的方法?

Nihility/ 2017-06-06 11:26:01
数据格式:

INSERT INTO T_B_BASE_STATION (DEC_LAC_CI,BASE_STATION_ADDRESS,LNG,LAT) VALUES ('0_1', '辽宁省大连市西岗区大连港(2号门),东海路与跃进路路口西北750.74米', '121.643', '38.9368')
INSERT INTO T_B_BASE_STATION (DEC_LAC_CI,BASE_STATION_ADDRESS,LNG,LAT) VALUES ('0_1472012', '辽宁省辽阳市宏伟区曙光镇西八家子,辽溪公路与106省道路口南178.13米', '123.249', '41.2233')


表结构:

create table T_B_BASE_STATION
(
id VARCHAR2(32),
dec_lac VARCHAR2(32),
dec_ci VARCHAR2(32),
hex_lac VARCHAR2(32),
hex_ci VARCHAR2(32),
base_station_address VARCHAR2(300),
lng VARCHAR2(32),
lat VARCHAR2(32),
create_user VARCHAR2(32),
create_time DATE default sysdate,
update_user VARCHAR2(32),
update_time DATE default sysdate,
data_source VARCHAR2(32),
enable_flag CHAR(1) default 'Y',
dec_lac_ci VARCHAR2(50),
hex_lac_ci VARCHAR2(50),
station_type CHAR(1) default 0
)


有ID触发器(自动生成UUID的),有主键索引。
另外一个问题是,如果禁用ID和触发器,数据导入之后,可以给每条数据生成UUID吗?如何重建索引,或者之类的操作?
数据库新人,请各位前辈大神多指点,不胜感激!!!!
...全文
2650 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nihility/ 2017-06-22
  • 打赏
  • 举报
回复
引用 18 楼 qq_38206656的回复:
把sql删了,把数据用固定分隔符分割,用sqlldr,速度快些。但是1000w,也够麻烦的
是的 这种方式可能是最快的方式,但是不知道id列该如何处理,导入之后再新加ID列应该可以处理好,但是只是猜想。
imcmuc 2017-06-22
  • 打赏
  • 举报
回复
把sql删了,把数据用固定分隔符分割,用sqlldr,速度快些。但是1000w,也够麻烦的
Nihility/ 2017-06-21
  • 打赏
  • 举报
回复
引用 16 楼 shpery的回复:
用union all试下
前辈说下具体咋操作,不太熟悉数据库
shpery 2017-06-20
  • 打赏
  • 举报
回复
用union all试下
sxq129601 2017-06-09
  • 打赏
  • 举报
回复
1000W个INSERT,我也是醉了。
yujiaxucheng 2017-06-09
  • 打赏
  • 举报
回复
insert需要每多少条提交一次,非常慢。 纯文本用sqlloader来导入,语法:sqlldr user/psw@[ip]:1521/orcl control=C:\test\run.ctl log=C:\test\run.log ctl文件格式:
load data
infile 'C:\test\[导入数据文件].csv'
into table auto_tb
fields terminated by ','
TRAILING NULLCOLS
(col_name1,col_name2.....)
上次10多W数据,insert需要近1小时,sqlloader用了1分钟不到。
jdsnhan 2017-06-07
  • 打赏
  • 举报
回复
1200w,都是纯insert,那就太慢了。 前两天刚搞了一个从mysql到oracle的需求。 转换成指定格式文本,用sqlldr也可以,还是有点慢。 最后,经用户同意,用透明网关,oracle建立访问mysql的dblink,直接create table as select,有特殊需要再做第二次处理,速度最快。
微wx笑 2017-06-06
  • 打赏
  • 举报
回复
1000W INSERT语句文件有多大?
Nihility/ 2017-06-06
  • 打赏
  • 举报
回复
引用 7 楼 js14982的回复:
文本中全是insert语句,也可以处理下转成纯数据格式(文本工具批量替换和删除),然后再sqlldr导入,也是一个不错的选择
打算用JDBC的程序写,读这个文件,一万条提交一次,因为修改数据格式,文件比较大,更新起来比较卡
js14982 2017-06-06
  • 打赏
  • 举报
回复
文本中全是insert语句,也可以处理下转成纯数据格式(文本工具批量替换和删除),然后再sqlldr导入,也是一个不错的选择
Nihility/ 2017-06-06
  • 打赏
  • 举报
回复
在线等 在线等 在线等
Nihility/ 2017-06-06
  • 打赏
  • 举报
回复
别沉 别沉 别沉
Nihility/ 2017-06-06
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
1000W INSERT语句,快速插入ORACLE的方法? 你的原数据是什么样的,是一大堆 insert ,还是文本文件,如果是后者可以考虑 sqlldr 如果禁用ID和触发器,数据导入之后,可以给每条数据生成UUID吗? 可以,建议分批生成 何重建索引,或者之类的操作? 没有必要重建索引,收集统计信息就可以了
“你的原数据是什么样的,是一大堆 insert ,还是文本文件,如果是后者可以考虑 sqlldr ” 前辈,如果是前者呢?
壹四 2017-06-06
  • 打赏
  • 举报
回复
留名学习一波
Nihility/ 2017-06-06
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
1000W INSERT语句,快速插入ORACLE的方法? 你的原数据是什么样的,是一大堆 insert ,还是文本文件,如果是后者可以考虑 sqlldr 如果禁用ID和触发器,数据导入之后,可以给每条数据生成UUID吗? 可以,建议分批生成 何重建索引,或者之类的操作? 没有必要重建索引,收集统计信息就可以了
这个是MSSQL导出的数据,是insert语句的形式,我稍作修改成了上面的那个样子,文件是“.sql”的脚本,里边的内容是insert语句。前辈能具体的说下“没有必要重建索引,收集统计信息就可以了”,这里的统计信息可以得到索引同样的效果吗?不是专业数据库开发,还烦请具体说下操作,或者作用,感谢!
卖水果的net 2017-06-06
  • 打赏
  • 举报
回复
1000W INSERT语句,快速插入ORACLE的方法? 你的原数据是什么样的,是一大堆 insert ,还是文本文件,如果是后者可以考虑 sqlldr 如果禁用ID和触发器,数据导入之后,可以给每条数据生成UUID吗? 可以,建议分批生成 何重建索引,或者之类的操作? 没有必要重建索引,收集统计信息就可以了
Nihility/ 2017-06-06
  • 打赏
  • 举报
回复
引用 9 楼 微wx笑的回复:
1000W INSERT语句文件有多大?
最少一个G以上,580W有一个G
Nihility/ 2017-06-06
  • 打赏
  • 举报
回复
引用 10 楼 卖水果的net的回复:
1000W 条 insert 语句,文件大小估计在 1G 以上了,24小时都可能跑不完; 让 MSSQL 那边给你用 bcp 导出吧,这样可以用 sqlldr 导入; 大概 30 -60 分钟就可以跑完。 统计信息 这个词,你先百度一下,有问题可以再来追问;
语句只是说个数量级,数据量大概在1200W 然后文件两个,加起来3G,里边全是insert语句
卖水果的net 2017-06-06
  • 打赏
  • 举报
回复
1000W 条 insert 语句,文件大小估计在 1G 以上了,24小时都可能跑不完; 让 MSSQL 那边给你用 bcp 导出吧,这样可以用 sqlldr 导入; 大概 30 -60 分钟就可以跑完。 统计信息 这个词,你先百度一下,有问题可以再来追问;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧