免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: LiveHappy
打印 上一主题 下一主题

如何一次插入200万条记录? [复制链接]

论坛徽章:
0
14 [报告]
发表于 2006-10-17 12:35 |只看该作者
慢就慢吧

论坛徽章:
0
13 [报告]
发表于 2006-10-17 10:47 |只看该作者
原帖由 tong0245 于 2006-10-16 16:12 发表

那你就生成文件再导入 .


不知道怎么生成文件可以快点,下面是这生成文件的代码,很慢,请指教下,谢谢


  1. int count = 2000000;
  2.         String outStr = "";
  3.         //但是这个循环很慢,我只测了下下面的for循环,光这个循环就执行近一个小时还没执行完这个循环
  4.         for(int i=0;i<count;i++)
  5.         {
  6.             outStr +="123456,"+i+","+ Math.round(Math.random() * 100000000)+"\n";
  7.             //System.out.println(i);
  8.         }
  9.         
  10.         File fileOut = new File("e://outTemp.dat");
  11.         try
  12.         {
  13.             fileOut.createNewFile();
  14.         } catch (IOException ex)
  15.         {
  16.         }
  17.         fileOut.canWrite();
  18.         FileOutputStream fileOutStr = null;
  19.         try
  20.         {
  21.             fileOutStr = new FileOutputStream(fileOut);
  22.         } catch (FileNotFoundException ex2)
  23.         {
  24.         }
  25.         BufferedOutputStream bufferedOut = new BufferedOutputStream(fileOutStr);
  26.         byte outBy[] = outStr.getBytes();
  27.         try
  28.         {
  29.             bufferedOut.write(outBy);
  30.         } catch (IOException ex3)
  31.         {
  32.         }
复制代码

论坛徽章:
0
12 [报告]
发表于 2006-10-16 17:53 |只看该作者
原帖由 qn_0 于 2006-10-16 17:24 发表
why not use PreparedStatement


同上

论坛徽章:
0
11 [报告]
发表于 2006-10-16 17:39 |只看该作者
一个是用PreparedStatement  
另外呢还是分批 插入试试吧

论坛徽章:
0
10 [报告]
发表于 2006-10-16 17:24 |只看该作者
why not use PreparedStatement

论坛徽章:
0
9 [报告]
发表于 2006-10-16 16:56 |只看该作者
这个是代码

  1.      String DaiMa ="2109";
  2. String defaultJX ="二位";
  3. String QH ="200610";
  4. int QiShiHaoMa=1,count=2000000;
  5. //arrayList1和arrayList2是两个数组,它们的值通过 数组index建立关系
  6.         DatabaseCon databaseCon3=new DatabaseCon();//连接数据库
  7.      for (int j = QiShiHaoMa; j < QiShiHaoMa + count; j++) {
  8.        proRandom randomM = new proRandom();//产生随机数
  9.        if (arrayList1.contains(j)) {
  10.          String JX = String.valueOf(arrayList2.get(j)) + "Բ";
  11.          String SQL = "insert into XinXi(fapysxx_dm,fapysxx_hm,fapysxx_mm,fapysxx_jx,fapysxx_qh) values(" +
  12.              DaiMa + "," + j + "," + randomM.createInteger() + "," +
  13.              JX + "," + QH + ")";
  14.          databaseCon3.executeUpdate(SQL);
  15.        }
  16.        else {
  17.          String SQL = "insert into XinXi(fapysxx_dm,fapysxx_hm,fapysxx_mm,fapysxx_jx,fapysxx_qh) values(" +
  18.              DaiMa + "," + j + "," + randomM.createInteger() + ",'" +
  19.              defaultJX + "'," + QH + ")";
  20.          databaseCon3.executeUpdate(SQL);
  21.        }
  22.      }
复制代码

论坛徽章:
0
8 [报告]
发表于 2006-10-16 16:19 |只看该作者
原帖由 LiveHappy 于 2006-10-16 14:42 发表
我用JAVA通过循环插入200万条记录到SQLServer 2000中,运行以后等了5分钟左右机子就蓝屏报错:物理内存不够,然后重启机器,查看数据库,数据库已经插入了3万多条
现问各位这与什么有关,又如何插入这200万条?
谢谢大家!

就是你发得信息就好 告诉某人死了  死了 原因是什么 什么

论坛徽章:
0
7 [报告]
发表于 2006-10-16 16:15 |只看该作者
原帖由 LiveHappy 于 2006-10-16 15:48 发表


没法导入,每一条数据都是根据程序中设定的参数动态生成的,

你用profile 工具分析你得程序吧.
200万也不多
顶多是慢
要不你把程序发上来

论坛徽章:
0
6 [报告]
发表于 2006-10-16 16:12 |只看该作者
原帖由 LiveHappy 于 2006-10-16 15:48 发表


没法导入,每一条数据都是根据程序中设定的参数动态生成的,

那你就生成文件再导入 .

论坛徽章:
0
5 [报告]
发表于 2006-10-16 15:48 |只看该作者
原帖由 qn_0 于 2006-10-16 14:50 发表
为什么不用导入。。


没法导入,每一条数据都是根据程序中设定的参数动态生成的,
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP