Archive for the '数据库应用' Category

导入大型数据库(大体积SQL文件)到phpMyAdmin

也许很多人会因为phpMyAdmin的上传大小限制而上传不了大体积的SQL数据库文件, 比如限制为2024KB, 而实际要导入的是18MB, 甚至更大, 这样可以利用下面这段代码进行导入.:

用法:

  1. 修改代码中的选项
  2. 将以下代码保存为*.php
  3. 访问这个文件

源代码:

·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. <?   
  2. //用来快速Mysql的大数据备份   
  3. //使用前请首先按照代码注释修改要导入的SQL文件名、数据库主机名、数据库用户名、密码、数据库名   
  4. //同时将数据库文件和本文本一起ftp导网站目录,然后以web方式访问此文件即可   
  5.   
  6.         $file_name=“sql.sql”//要导入的SQL文件名   
  7.         $dbhost=“localhost”//数据库主机名   
  8.         $dbuser=“user”//数据库用户名   
  9.         $dbpass=“pass”;          //数据库密码   
  10.         $dbname=“dbname”;      //数据库名   
  11.           
  12.         set_time_limit(0); //设置超时时间为0,表示一直执行。当php在safe mode模式下无效,此时可能会导致导入超时,此时需要分段导入   
  13.         $fp = @fopen($file_name“r”or die(“不能打开SQL文件 $file_name”);//打开文件   
  14.         mysql_connect($dbhost$dbuser$dbpassor die(“不能连接数据库 $dbhost”);//连接数据库   
  15.         mysql_select_db($dbnameor die (“不能打开数据库 $dbname”);//打开数据库   
  16. mysql_query(‘set names utf8′);   
  17.         echo “正在执行导入操作”;   
  18.         while($SQL=GetNextSQL()){   
  19.                 if (!mysql_query($SQL)){   
  20.                         echo “执行出错:”.mysql_error(). 
  21. ;   
  22.                         echo “SQL语句为:  
  23. .$SQL. 
  24. ;   
  25.                 };   
  26.         }   
  27.         echo “导入完成”;   
  28.   
  29.         fclose($fpor die(“Can’t close file $file_name”);//关闭文件   
  30.         mysql_close();   
  31.   
  32.         //从文件中逐条取SQL   
  33.         function GetNextSQL() {   
  34.                 global $fp;   
  35.                 $sql=“”;   
  36.                 while ($line = @fgets($fp, 40960)) {   
  37.                         $line = trim($line);   
  38.                         //以下三句在高版本php中不需要,在部分低版本中也许需要修改   
  39.                         $line = str_replace(“\\\\”,”\\“,$line);  
  40.                         $line = str_replace(“\’“,”“,$line);  
  41.                         $line = str_replace(“\\r\\n“,chr(13).chr(10),$line);  
  42. //                        $line = stripcslashes($line);  
  43.                         if (strlen($line)>1) {  
  44.                                 if ($line[0]==”-“ && $line[1]==”-“) {  
  45.                                         continue;  
  46.                                 }  
  47.                         }  
  48.                         $sql.=$line.chr(13).chr(10);  
  49.                         if (strlen($line)>0){  
  50.                                 if ($line[strlen($line)-1]==”;”){   
  51.                                         break;   
  52.                                 }   
  53.                         }   
  54.                 }   
  55.                 return $sql;   
  56.         }   
  57. ?>  

SQL之批量语句替换

如何在phpMyAdmin用SQL语句批量替换内容呢?:

写这篇文章的原因是因为我的博客自从301重定向, (自clyee.me到clyee.com)之后一直忘记干件事,

就是把主域名从Clyee.me换成Clyee.com.

今天晚上无意中修改了默认域名,

于是博客的根目录地址由/domains/clyee.me/public_html变成了/domains/clyee.com/public_html.

这一改可就麻烦了,  点进去原来的日志发现图片都消失了, 我才意识到出事了,

但是图片们还都乖乖的躺在媒体库啊, 为什么引用不出来呢?

于是我用phpmyadmin打开数据库,

这不打开不知道一打开下一跳, 原来文章字段里的图片引用源代码是原来的域名, 也就域名全是clyee.me

原来没发现这个的原因是因为clyee.me作为一个重定向的原域名不应该乱动,

因为是301重定向, 所以图片什么的都可以引用到, 今天打算用Clyee.me这个域名做点事,

于是决定改了默认域名.

好了废话少说, 怎么做呢?

打开数据库-点击搜索,

输入clyee.me(原域名)然后选择你的wordpress数据库.

我的网站搜索出来的结果如下, (我的已经修改好了,所以数目很少,一般是有几百条的)

如果数目十分少的话, 比如1,2条你就可以直接点击”浏览”, 然后修改相应字段.

建议在新窗口打开免得等下重新搜索很麻烦!

如果数目十分大的话,点击浏览进入相应表段的搜索结果.

如下图:

如果要替换掉post_content表段(WordPress中的文章正文)的所有clyee.me为clyee.com的话,

那么在总表的上分页栏标签点击SQL

然后键入以下语句:

UPDATE wp_posts SET post_content = REPLACE(post_content, 'clyee.me','clyee.com')

其他的表段也是相同的做法, 比如要把wp-comments中的comment_author_url的所有clyee.me的字串替换成clyee.com.

那么执行以下语句.

UPDATE wp_comments SET comment_author_url = REPLACE(comment_author_url, 'clyee.me','clyee.com')

其他的就自己看着办咯,  这里只是简要的讲下如何执行sql语句操控数据库来批量更改内容.

只要是靠数据表的程序都可以使用这种方法来操作数据库,

说句题外话

当然啦, sql的语句非常强大,

记得当初学习网络安全技术的时候在入侵环节若是碰到MYSQL数据库的家伙那么SQL语句大展身手了,

你可以通过操纵数据表来新建用户名等等, 具体在这里就不说了.

回归正题,一定在操作前备份数据库到本地计算机!