CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  PHP

一个批量上传.支持断点续传的思路.

楼主anziqi(美洲狮)2002-09-11 10:56:50 在 Web 开发 / PHP 提问

我这里有一个三十万条记录的库要上传到网上数据库中.  
   
  为了防止他超时所以要有断点续传功能.  
   
  谁有思路或代码.  
   
  提兄弟一把.  
   
  呵呵.谢谢各位大侠. 问题点数:60、回复次数:33Top

1 楼pantech_36(~ 25436 ~)回复于 2002-09-11 11:26:24 得分 0

gzTop

2 楼cnnps(诸葛晓光)回复于 2002-09-11 11:51:13 得分 0

有点难度....Top

3 楼drifters(呵呵)回复于 2002-09-11 12:01:04 得分 5

每次用程序插入100条后重新载入页面,如此循环就行了Top

4 楼anziqi(美洲狮)回复于 2002-09-11 12:11:01 得分 0

累死了吧.  
  不过这个思路可以.可不可以给出一点代码看看.  
  谢谢Top

5 楼anziqi(美洲狮)回复于 2002-09-11 13:51:06 得分 0

up请高手多多帮忙.Top

6 楼nne998(☆☆☆☆☆☆☆伴月)回复于 2002-09-11 21:19:29 得分 0

为每条记录做个id,,,,   先检查数据库,就知道现在传到哪个咯,,,Top

7 楼anziqi(美洲狮)回复于 2002-09-12 08:29:50 得分 0

具体一点好吗?  
   
  象你说的那种我已经编了一个了.不过我感觉不理想.  
   
  你能说的详细一点或给个程序吗?这个不是大程序几行代码出来了.  
   
  谢谢各位大侠了.Top

8 楼vivanboy(早起的鸟儿有虫吃)回复于 2002-09-12 10:27:35 得分 0

先up  
   
  你是想用ftp软件将mysql目录上传上去,还是用程序insert上去  
   
  Top

9 楼phpteam(phpsalon.com)回复于 2002-09-12 10:37:01 得分 0

我不发表任何意见!昨天开始肚子闹情绪,今天也一样,要去看医生了,拜拜Top

10 楼ipman(.NET)回复于 2002-09-12 11:00:08 得分 5

dump出来,然后ftp上去,然后在服务器上做个脚本import进数据库Top

11 楼vivanboy(早起的鸟儿有虫吃)回复于 2002-09-12 11:26:09 得分 10

mysqldump   --opt   database   |   mysql   --host=remote-host   -C   database  
   
  直接将数据库dump另外一个mysql服务器上  
   
  Top

12 楼vivanboy(早起的鸟儿有虫吃)回复于 2002-09-12 11:37:20 得分 10

or:  
   
  backup:  
  mysqldump   --opt   databaseName   >   backup-file.sql  
  restore:  
  mysql   databaseName   <   backup-file.sql  
   
  Top

13 楼anziqi(美洲狮)回复于 2002-09-12 11:53:07 得分 0

谢老兄.我有点笨.问清楚一点.  
   
  我用的是windows xp兄台说的这个东东我真的没有用过.  
   
  你能加上注释吗?  
   
  在那里运行.谢谢.我太笨了.  
  Top

14 楼anziqi(美洲狮)回复于 2002-09-12 11:58:38 得分 0

<?php  
  /*_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-  
   
          Copyright   limuyuan   2000-2008  
          批量上传  
          I'm   Crazy   Programmer     anziqi  
  思路:  
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-*/  
  session_start();  
  @$linkid   =   mysql_pconnect("localhost","root")   or   die   (print   "无法链接数据库!");  
  if(!$_SESSION['id'])    
  {  
  session_register('id','m');  
  $_SESSION['id']=0;  
  }  
  /*  
  if(!@mysql_select_db("test1"))    
  {  
  mysql_create_db("test1");  
          }  
  if(!@mysql_query("select   count(*)   from   dt_product"))  
  {  
  $sql="CREATE   TABLE   dt_product   (     tp_id   int(11)   NOT   NULL   auto_increment,tp_model   varchar(254)   default   NULL,     tp_type   varchar(254)   default   NULL,     tp_userid   bigint(3)   default   NULL,     tp_maker   varchar(254)   default   NULL,     tp_enc   varchar(254)   default   NULL,     tp_unit   varchar(50)   default   NULL,     tp_price   int(11)   default   NULL,     tp_stock   int(11)   default   NULL,     tp_notes   text,     tp_num   int(11)   default   NULL,     PRIMARY   KEY     (tp_id),     KEY   tp_userid   (tp_userid),     KEY   tp_model   (tp_model))   TYPE=MyISAM;";  
  @mysql_query($sql)   or   die   (print   "无法执行SQL语句!");  
          print   "create   ok";  
  }  
  */  
  $resu=mysql_db_query("iwn","select   *   from   dt_product   where   tp_id>".$_SESSION['id']);  
   
  while($aa=mysql_fetch_array($resu))    
   
  {  
   
    $sql_str="INSERT   INTO   `dt_product`   (`tp_id`,   `tp_model`,   `tp_type`,   `tp_userid`,   `tp_maker`,   `tp_enc`,   `tp_unit`,   `tp_price`,   `tp_stock`,   `tp_notes`,   `tp_num`)   VALUES   ('".$aa['tp_id']."','".$aa['tp_model']."',   '".$aa[tp_type]."',   '".$aa[tp_userid]."',   '".$aa[tp_maker]."','   ".$aa[tp_enc]."','   ".$aa[tp_unit]."','   ".$aa[tp_price]."',   '".$aa[tp_stock]."','   ".$aa[tp_notes]."','   ".$aa[tp_num]."')";  
  mysql_db_query("test1",$sql_str);  
  print   $_SESSION['id']=$aa['tp_id'];  
  $_SESSION['m']++;  
  print   "已经添加了".$_SESSION['m']."<br>";  
   
   
   
  }  
  print   "添加完成";  
     
  ?>  
   
  这是我的一个程序就是一条条的添加了,但是有一个问题就是他会超时.  
  所以我为了防止他超时在select上作了一个session来记录id值.  
   
  那种加多少条.跳转一下的方面我也用了.但也会出现超时现象.  
   
  而且慢.如果是用这种程序来做的话.大侠们有没能好的办法.  
   
  我真的太笨了.Top

15 楼vivanboy(早起的鸟儿有虫吃)回复于 2002-09-12 11:59:47 得分 0

进入dos  
  mysql\bin目录下面有这个mysqldump命令,专门用来备份数据库的命令  
  可以将数据库倒入到文本。也可以直接copy到另外一个服务器  
   
  你直接敲入mysqldump就会出来帮助Top

16 楼anziqi(美洲狮)回复于 2002-09-12 12:03:16 得分 0

可以这样吗:你是想用ftp软件将mysql目录上传上去  
   
  是怎么传的.这个东东放上去就可以用了吗?Top

17 楼vivanboy(早起的鸟儿有虫吃)回复于 2002-09-12 12:05:41 得分 10

对于你的程序用一句sql语句就可以搞定了  
   
  create   table   dt_product   select   *   from   iwn.dt_product  
  Top

18 楼vivanboy(早起的鸟儿有虫吃)回复于 2002-09-12 12:08:58 得分 10

mysql数据库备份方法:  
  1.拷贝数据库源文件.你到mysql\data目录兄面看看,下面一个目录代表一个数据库。拷贝目录到另外一个服务器就是新建一个数据库了。linux下面注意扩展名大小写问题  
  2.mysqldump  
  3.自己写程序Top

19 楼vivanboy(早起的鸟儿有虫吃)回复于 2002-09-12 12:10:28 得分 0

对于第一种方法,在linux下面可能不是data目录,而是mysql目录,自己找找就知道了  
  对于第三种,wasy以前写过一个备份程序。Top

20 楼anziqi(美洲狮)回复于 2002-09-12 13:48:55 得分 0

谢鸟儿我自己看看.Top

21 楼wcy001(天天向上)回复于 2002-09-12 16:46:20 得分 0

设置不超时可以用set_time_limit(0)就可以了,不过你不需要那么做就可以达到目的,就使用mysqldump就可以  
  Top

22 楼anziqi(美洲狮)回复于 2002-09-12 17:00:50 得分 0

create   table   dt_product   select   *   from   iwn.dt_product  
   
  适用于本地和服务器两个库吗?Top

23 楼anziqi(美洲狮)回复于 2002-09-12 17:03:17 得分 0

CGI   Timeout  
  The   specified   CGI   application   exceeded   the   allowed   time   for   processing.   The   server   has   deleted   the   process.  
  是超时吧.我用了set_time_limit(0);  
  怎么还是这样.Top

24 楼vivanboy(早起的鸟儿有虫吃)回复于 2002-09-12 17:17:59 得分 0

可能不适合,不敢确定,没有试过。  
  try:  
  otherServerName.iwn.dt_product  
  不过用户名和密码肯定要能够连上那个server的  
   
  我是根据你的程序来写的。你程序里面只是同一个数据库  
   
  你还是用mysqldump或者直接拷贝较好Top

25 楼anziqi(美洲狮)回复于 2002-09-12 18:16:08 得分 0

为什么我改php.ini还是用那个都是超时.  
   
  是不是他往网上服务器上插入数据他是按服务器的配置来.超时设置是五分钟.  
   
  我的超时设置为什么不好使呀.Top

26 楼anziqi(美洲狮)回复于 2002-09-12 18:20:22 得分 0

mysqldump原理是什么.  
   
  生成文件后把他放在别一个库中就可以使用.  
   
  还是怎么的.我在phpadmin中导过一次因为太大好象也有超时所以失败.  
   
  如果是copy文件.我没有ftp的密码.Top

27 楼phpteam(phpsalon.com)回复于 2002-09-12 18:25:09 得分 10

MYSQLDUMP是将数据库生成SQL语句的形式存放的,导入的时候就等于执行这些SQL语句。  
  你上面这个错误应该不是超时错误。Top

28 楼anziqi(美洲狮)回复于 2002-09-12 18:42:22 得分 0

这种方面我应该用了.还是不行.  
   
  导到一半的时候跳出来了.跟没有导一样.  
   
  所以放弃.Top

29 楼phpteam(phpsalon.com)回复于 2002-09-12 18:45:28 得分 0

用PHPMYADMIN导出不行吗???Top

30 楼anziqi(美洲狮)回复于 2002-09-12 19:29:31 得分 0

用了.行是行.  
  在导入的时候那个大的数据库导入一会就会跳出.  
   
  并提示出错.  
  Top

31 楼vivanboy(早起的鸟儿有虫吃)回复于 2002-09-12 19:35:56 得分 0

另外一台服务器是linux吗  
  你到底有没有那台服务器的权限???  
   
  如果你有ftp用户名和密码,以及mysql数据库目录的写权限,你才可以用ftp的方法将文件上传上去  
   
  否则你只有用程序来实现。当然phpmyadmin也是程序。  
  你如果用phpmyadmin导出,可以将倒出的语句一部分一部分的执行。  
   
  你也可以用你上面提供的程序,每次循环的时候先检查程序已经化了多长时间  
  ,如果快到超时时间,记下当前的循环次数$n,并存为session,然后重新转向该页再执行一次,不过这时候要用mysql_data_seek直接转到记录集的第$n行,然后再循环,$n递加,如此循环就会下去就可以搞定Top

32 楼vivanboy(早起的鸟儿有虫吃)回复于 2002-09-12 19:36:56 得分 0

提示错误,可能是因为里面有#,这是phpmyadmin的bug  
  你可以自己写程序Top

33 楼anziqi(美洲狮)回复于 2002-09-13 08:20:13 得分 0

谢谢你.  
   
  我今天来了好象没有加分.  
   
  这些我有用的.好的我试试.  
   
  星期六星期天.我好好找找再整理.  
   
  昨天老总给我叫回去了没有办法.再整理.Top

相关问题

  • MSN支持断点续传吗?
  • myeclipse支持jsp断点调试吗?
  • 请问IIS5.0支不支持断点续传?如不支持,怎样才能让网站支持断点续传?
  • 请问php是否支持断点续传。(主要对ftp)
  • 谁有多线程、支持断点续传的javabean?
  • 有谁用过Cuteftp,它到底支不支持断点上传?
  • Visual Studio .NET Enterprise哪儿有下??支持断点!!!!!
  • 怎么让ie下载时支持断点续传?
  • dreamweaver mx英文版(支持断点)地址!!!
  • 支持断点续传的Http上传组件下载

关键词

  • 数据库
  • 服务器
  • 代码
  • mysql
  • 目录
  • 超时
  • 程序
  • mysqldump
  • 思路
  • 大侠

得分解答快速导航

  • 帖主:anziqi
  • drifters
  • ipman
  • vivanboy
  • vivanboy
  • vivanboy
  • vivanboy
  • phpteam

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo