日期:2014-05-20  浏览次数:20741 次

读取数据表并插入到数据库
有张数据表,如图


现在需要用java读取把这张表的数据,并插入到orcl数据库中的card_hi表中
现在图片上的数据较少,应该有很多,麻烦考虑下效率问题 ,谢谢!
图片不是很清楚,最后的字段不是已分号结束的,是用的回车键

------解决方案--------------------
是不同的库 ? 么玩过大数量
------解决方案--------------------
1、加载数据文件
2、创建sqlload文件1。
3、读取数据文件,循环每行数据,写入sqlload文件。
4、判断100W行时,创建线程(执行命令导入sqlload文件1到数据库,并记录日志)。
5、创建sqlload文件2。
6、继续读取数据文件。。。
7、。。。

------解决方案--------------------
一次读一部分进行插入
------解决方案--------------------
用bufferedreader的readline读每一行,然后用split(";")取每列数据?
------解决方案--------------------
怎么理解了...读出来转换成对象,保存到另一张表不就行了
table1(表一对象) new table2(表2对象)
table2.set字段(table1.相应字段) 
...

save(table2);
------解决方案--------------------
写个循环。一部分一部分的写入吧。。数据也不是太多。
------解决方案--------------------
我之前用過bufferReader讀過900M的文本文件,也是要拆分的,讀取30秒左右,關鍵是設置buffer大小,
插入速度應該 沒什么問題!
------解决方案--------------------
10W数据。。。
大数据的入库,数据库写操作是瓶颈。如果能接受数据insert进行JDBC操作的效率。
那一般的生产者,消费者模式就足够了。
建立队列,线程A从文本中bufferedreader的readline读每条数据,放入队列集合中,
线程B隔一定周期从队列集合中取出所有数据进行批量insert,并清空队列(注意队列集合的同步,如果考虑同步影响一定的效率,可以考虑建2个队列切换使用)。
让文本读操作和数据库写操作同时进行。

如果需求不能接受jdbc执行insert的效率。可以使用数据库导入组件,或者sqlload.
bufferedreader的readline读文本生成数据文件,用imp或者sqlload直接导入数据库。。。
------解决方案--------------------
使用多线程插入