您当前的位置: 首页 > 数据库教程 > MySQL教程 > 从MySQL导入导出大量数据的程序实现方法

从MySQL导入导出大量数据的程序实现方法

作者:guanchaofeng 来源:不详 发布时间: 2009-07-10 18:34 点击:
大家一定使用过phpmyadmin里面的数据库导入,导出功能,非常方便。但是在实际应用中,我发现如下几个问题: 1、数据库超过一定尺寸,比如6M这时使用导出一般没问题,可以正确的保存到本机硬盘上面,但是导入则不行!原因是:一般的PHP.INI里面设置临时文件/上

从MySQL导入导出大量数据的程序实现方法

  大家一定使用过phpmyadmin里面的数据库导入,导出功能,非常方便。但是在实际应用中,我发现如下几个问题:
  
  1、数据库超过一定尺寸,比如6M这时使用导出一般没问题,可以正确的保存到本机硬盘上面,但是导入则不行!原因是:一般的PHP.INI里面设置临时文件/上传文件的大小限制为2M,而phpmyadmin使用了上传的方式,造成失败。
  
  2、导出到硬盘的.SQL文件在导回时,经常出现由于某些单引号的问题引起失败,造成导入失败,只能用mysql等应用程序导入了。
  
  我的数据库已经超过10M,所以必须解决这个问题。我的思路:
  
  导出:用phpmyadmin保存数据库/表格结构,用脚本读取数据库内容并保存到文件里面!
  
  导入:用phpmyadmin恢复数据库/表格结构,用脚本读取文件,然后保存到库里面!
  
  导出程序如下:调用方法为****.php?table=tablename
  
  这个简单的程序目前一次保存一个表格!!每行为一个字段的数据!!
  
  if($table=="")exit();
  
  mysql_connect("localhost","name","password");
  
  mysql_select_db("database");
  
  $result=mysql_query("select*from$table");
  
  if(mysql_num_rows($result)<=0)exit();
  
  echo"开始转换数据到文本...
  
  ";
  
  $handle=fopen("$table.txt","w");
  
  $numfields=mysql_num_fields($result);
  
  fputs($handle,$numfields."");
  
  for($k=0;$k
  
  {
  
  $msg=mysql_fetch_row($result);
  
  for($i=0;$i<$numfields;$i++)
  
  {
  
  $msg[$i]=str_replace("","&&php2000mysqlreturn&&",$msg[$i]);
  
  $msg[$i]=str_replace("","&&php2000mysqlreturn&&",$msg[$i]);
  
  fputs($handle,$msg[$i]."");
  
  }
  
  fputs($handle,"-------php2000dumpdataprogramV1.0forMySQL--------");
  
  }
  
  fclose($handle);
  
  echo"ok";
  
  ?>
  
  导入的程序如下:用法同上面!
  
  if($table=="")exit();
  
  mysql_connect("localhost","name","password");
  
  mysql_select_db("database");
  
  $message=file("$table.txt");
  
  echo$numfields=chop($message[0]);
  
  for($k=1;$k
  
  {
  
  $value="";
  
  for($i=$k;$i<($k+$numfields-1);$i++)
  
  {
  
  $tmp=str_replace("&&php2000mysqlreturn&&","",chop($message[$i]));
  
  $value.="'".addslashes($tmp)."',";
  
  }
  
  $tmp=str_replace("&&php2000mysqlreturn&&","",chop($message[$k+$numfields-1]));
  
  $value.="'".$tmp."'";
  
  $query="insertinto$tablevalues(".$value.")";
  
  echomysql_error();
  
  mysql_query($query);
  
  echo$k."";
  
  }
  
  echo"ok";
  
  ?>
  
  使用方法和可能的问题!
  
  1、导入时file()函数可能会有问题(我的10M的数据没出现问题),可以改为fopen()然后没次读一行!!
  
  2、导入,导出都需要用ftp操作,也就是导出后,用ftp把数据转到本机,导入时先用ftp转移数据到服务器!

分享到:
本文"从MySQL导入导出大量数据的程序实现方法"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4