日期:2014-05-18  浏览次数:20850 次

二三十万条数据 你是如何一次性导入数据库的?
请各位写下思路,或者贴出代码,
最好能发到邮箱,java_coding@126.com 谢谢。。。^_^

------解决方案--------------------
这问题问得,这二三十万是什么格式的数据?还是二三十万行的 INSERT 语句?
------解决方案--------------------
批量导入
或则多线程来
看到ls
我不敢回答问题了
------解决方案--------------------
批量是比较好的方式,而且不能一次性,要分批多次导入。

我真不敢说谁一次性敢导入这么多!
内存肯定受不了。

还有看你的数据有多大,一般情况下一千条提交一次,看你的机器性能。
------解决方案--------------------
应该是从文件读吧?2、30万放内存应该不现实。
读文件读到1万条记录,

用preparedStatement,
executeBatch()
commit。

继续读
------解决方案--------------------
批量插入 或者多线程吧
------解决方案--------------------
好像每种数据库都提供一种读大数据的方法的,不过我不是很清楚。
------解决方案--------------------
你的数据时什么格式的?如果是excel的可以用命令直接插入
------解决方案--------------------
Java code

for (int i = 1 ; i <=30 ; i++){
    先读取1W条,然后批量插入数据库中
    commit;
}

------解决方案--------------------
关注
------解决方案--------------------
几千行的Excel数据导入都要跑两分钟左右的,几十万行,估计是要崩掉的... ...
------解决方案--------------------
我以前用POI处理过EXCEL数据,但是能处理效率很低,后来我数据格式改成csv的,就好多了。

------解决方案--------------------
探讨
谢谢楼上各位的帮忙,我试过用循环50条数据commit一下,然后清空缓存关闭连接,之后又打开连接重复操作,貌似connection还是会爆掉。。。
另外在sqlserver下可以直接将Excel数据导入进去,但是会丢失部分数据,应该是格式的问题,不知道如何解决。
至于多线程我了解的不多,各位能否详细讲解一下,,谢谢。。。

------解决方案--------------------
探讨
引用:
这问题问得,这二三十万是什么格式的数据?还是二三十万行的 INSERT 语句?


比如二三十万行有规则的数据存放在excel文件中。。。如下:
a  b  c  d  e  f
a  b  c    e  f
a    c  d  e  f
a  b  c  d  e 
a  b  c  d    f
................
请帮忙哦。。。

------解决方案--------------------
批量导入数据库~

强烈建议不要自己写程序 实现,应该遵循如下原则:

1. 优先考虑使用 数据库 提供的批量导入命令实现,速度快,效率高(oracle 就有sqlldr命令)

2. 优先考虑使用命令行,直接导入.例如:insert table ……

3. 最后 才是考虑自己写程序 进行数据导入~

你就二三十万数据 算什么?也不算很大量的,我曾将将200万数据导入至 db2 至花了 5秒不到的时间。

我是用的db2 批量导入的命令:

db2 "export to RPT_DIRECTORY_FILE_new_1.txt of del select * from RPT_DIRECTORY_FILE where rpt_id in('A3015','A3021','A3037','A3047')"
------解决方案--------------------
imp buffer=大点 direct=y
------解决方案--------------------
分批是个好主意,一般1W条提交一次,这样不影响性能。
------解决方案--------------------
学习一下。
从来没导过这么多的数据。
------解决方案--------------------
同4楼
分批量提交
------解决方案--------------------
1000条提交一次,一会就搞定了。
------解决方案--------------------
50条一次的,批量执行,JDBC的。。我导过2000W的,都没有问题。只用了半天。2台电脑
------解决方案--------------------