社区
Web 开发
帖子详情
100分求教:十万条数据,如何一次性插入数据库,才能保证效率?
tttk
2006-08-31 04:44:07
一个上报数据的项目,一次上报的数据记录量可能多达十几万条,甚至更多。
曾经想过用数据库提供的import/load工具来导入,但却苦于不知道如何在java中调用。
看了论坛里以前的一些帖子,对于大批量的插入操作,很多朋友都建议使用批插入方式(batchUpdate)。但如此巨量的数据如果一次性提交,是不是会极大的影响服务器性能?
麻烦大家给点建议,谢谢。
...全文
5501
63
打赏
收藏
100分求教:十万条数据,如何一次性插入数据库,才能保证效率?
一个上报数据的项目,一次上报的数据记录量可能多达十几万条,甚至更多。 曾经想过用数据库提供的import/load工具来导入,但却苦于不知道如何在java中调用。 看了论坛里以前的一些帖子,对于大批量的插入操作,很多朋友都建议使用批插入方式(batchUpdate)。但如此巨量的数据如果一次性提交,是不是会极大的影响服务器性能? 麻烦大家给点建议,谢谢。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
63 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ljhxuer
2007-04-12
打赏
举报
回复
分页提取数据,然后再批量插入提取的数据
fest
2006-12-26
打赏
举报
回复
mark
skysss
2006-09-18
打赏
举报
回复
用JDBC装数据实在太慢.
一般做数据迁移还是用JAVA
调用外部进程(load ,import)比较实际.
参见runtime.exec吧.
tttk
2006-09-04
打赏
举报
回复
谢谢楼上。你的想法基本上和我不谋而合。
惟一的不同在于,在上传完毕后,还需要反馈数据中有错的部分。
zhb1208
2006-09-03
打赏
举报
回复
关注
tttk
2006-09-03
打赏
举报
回复
楼上的朋友,这是一个现实中遇到的问题,何疯之由?
yaray
2006-09-03
打赏
举报
回复
如果用户数据实时性不强的话,可以考虑以下方案:
用户操作后执行:
. 源数据导出到指定格式的文件(xml/txt/...)
. 上传数据文件
. 显示操作成功(用户有感知的部分完成)
----
. 后台定时执行(在访问量小的时间,比如后半夜):
. 从指定格式的文件导入数据,建立索引,....
====
以上仅为想法,未经实际测试.
bestrong
2006-09-01
打赏
举报
回复
奉劝楼主不要用临时表
除非服务器的内存特别大 ,不然会报内存错误中断服务的。
seawalt
2006-09-01
打赏
举报
回复
你用SQl事件探查器不就知道Sql Server是怎么import/output的?
SINCE1978
2006-09-01
打赏
举报
回复
mark
tttk
2006-09-01
打赏
举报
回复
测试结果:采用临时表的方式,插入10万条数据,只需要3~5秒。(包含日志,没建立索引)
gaoan
2006-09-01
打赏
举报
回复
这个帖子有点技术含量,关注。
tttk
2006-09-01
打赏
举报
回复
谢谢。plphoenix()你的经验对我很有帮助,我的确应该考虑一下分表或者临时表的方式。
现在有一个方案:每次插入一个临时表中,在该临时表中不使用日志,不建立索引。然后在后台进行数据的转储。用户得到反馈的时间将会很快。
dgrwang
2006-09-01
打赏
举报
回复
如果你能用工具连上数据库,那就直接用dts工具就可以,如果不可以,是web与数据库服务器分开的,那用sql语句
dgrwang
2006-09-01
打赏
举报
回复
sqlserver中用xp_cmdshell
例如
EXEC master..xp_cmdshell 'bcp pubs..title in e:\test.txt -c -t, -S127.0.0.1 -Usa -P '
这种是通过文本导入,可以通过参数修改,xp_cmdshell也可以导入excel
或者用BULK INSERT
例如
BULK INSERT pubs.dbo.[title] FROM 'e:\test.txt'
WITH (
DATAFILETYPE = 'char',
FIELDTERMINATOR= ',',
ROWTERMINATOR='
'
)
xp_cmdshell会有安全隐患,所以一般网站数据库管理员都可能会封,BULK INSERT在2000下没问题,在2005下好像验证更严格。
两个的速度,10w条都不超过10秒
plphoenix
2006-09-01
打赏
举报
回复
其实你可以先试一下插入1000条或多一点看看要多少时间,然后再算出来是不是能够接受这样的等待.
plphoenix
2006-09-01
打赏
举报
回复
以前是招行c/s下的sybase,项目里面也有部分功能是和你现在的一样的...
我以前是删除索引然后再建的,但是这个有个特点的,本身数据表内数据相对插入的数据不是多太多倍(300w/60w),所以会有点用处,lz现在这样可能不是太合适了,5000w的表建索引的话估计得半个小时了(我以前的服务器配置和你差不多,就是CPU是4个双核的).
我想要是我做的话我会通过先建临时表,然后直接插入主表.不删索引.写日志(其实要是直接把一张表全部插入到另一张表的话这个影响不了太多时间的,同时由于插入时间会比较长,所以为了防止意外还是应该写的).
其实现在的根本是这张表的大小相对硬件配置来说太大了,最好能分表
rikee19810706
2006-09-01
打赏
举报
回复
mark
leiyong000
2006-09-01
打赏
举报
回复
暂时关闭日志,直接在后台做吧
tttk
2006-09-01
打赏
举报
回复
呵呵,plphoenix() 何出此言啊?以前做过类似的项目?
加载更多回复(43)
超大
数据
量怎么破?SQL Server 优化之道
嘿!小伙伴们,是否遇到过这样的情况:
数据
一多,SQL Server 就开始“龟速模式”?💻 一
条
查询等半天,老板在催,自己在急!不过别担心,这篇文章将带你走进 SQL Server 的优化世界!不只是干货,还加了不少小技巧和案例,让我们从浅到深一层层剖析这个“
数据
大难题”!😎SQL Server 优化是一个庞大的主题,尤其是面对大
数据
量时,采取合适的优化策略是关键。我们今天聊了
分
区、索引、
分
页、物化视图等方法,结合实际案例一步步优化,帮助大家更清晰地理解优化的过程。
数据
库
水平切
分
的实现原理解析——
分
库,
分
表,主从,集群,负载均衡器(转)
第1章 引言 随着互联网应用的广泛普及,海量
数据
的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对
数据
库
造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过
数据
切
分
来提高网站性能,横向扩展
数据
层已经成为架构研发人员首选的方式。 水平切
分
数据
库
:可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失;
Java中的大
数据
处理:如何在内存中加载数亿级
数据
在上一期的内容中,我们深入探讨了Java中常用的内存管理机制,如堆(Heap)、栈(Stack)以及如何使用JVM优化应用程序的性能。我们学习了如何调优垃圾回收(Garbage Collection,简称GC),并了解了Java应用程序在面对内存溢出时可能的优化手段。在本期内容中,我们将进一步扩展内存管理的知识,重点介绍如何在Java应用中处理数亿
条
大
数据
。当我们面对大
数据
场景时,内存管理显得尤为关键,如何在内存中高效加载和处理数亿
条
数据
,成为优化Java应用性能的核心挑战。
sql语句,执行,实现没有这
条
数据
就新增,如有这
条
数据
就修改
原 sql语句,执行,实现没有这
条
数据
就新增,如有这
条
数据
就修改 ...
2021 Java面试真题集锦
目录 … 1 大厂面试的基本流程 17 字节跳动 17 阿里 17 腾讯 18 网易游戏 18 面试前需要准备: 18 面试中可以借鉴的套路 19 用简历争取到更多的面试机会 19 自我介绍时,立即全面抛出技术栈和亮点 20 先介绍项目背景,打消面试官疑问 21 通过说项目管理工具,说明你不仅会写代码 22 用 SPRING BOOT 项目举例,说明你的技术基本面 23 用实例说明你在内存调优方面的经验 24 展示你在
数据
库
调优方面的经验 25 总结前文说辞 26 准备项目说辞时,更可以准备后继面试官的问
Web 开发
81,122
社区成员
341,744
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章