如何导入超大mysql数据库备份文件

mysql_select_db($dbname)or die ("不能打开数据库 $dbname");//打开数据库 mysql_query('set names utf8');echo "正在执行导入操作";while($SQL=GetNextSQL()){ if (!mysql_query($SQL)){ echo "执行出错www.111cn.net:".mysql_error()."";echo "SQL语句为:".$SQL."";};} e...
如何导入超大mysql数据库备份文件
在mysql中导入/导出超大的sql文本文件,我们可以使用很多方法实例,如有:客户端直接命令操作,分块导入,客户端用source命令操作等等。
在实际工作中,有时经常地时行mysql数据库的导入和导入操作,但对于大型sql文件导入时,phpmyadmin是不行的,有太多限制,比如记录,内存等!

多种方案收集,如下:
方案一:客户端直接命令操作(此方法是我比较喜欢的)

  刚恢复一个电商网站mysql备份数据,此备份文件有300多M,因为phpmyadmin支持上传有限,文件太大IE停止响应,所以在本地用

代码如下
复制代码

  mysql -u root -p root jiahuibuydb<
c:/yebihai.sql

  但没导入进去,出来一大堆mysql的参数提示,不认输入的命令参数,后来写成下面这个样子,就是去掉了参数和数据之间的空格

代码如下
复制代码

  mysql -uroot -proot jiahuibuydb<
c:/yebihai.sql

  导入就OK了

  导出命令:

  a)导出整个库

  mysqldump -u 用户名 -p 数据库名 > 导出的文件名

代码如下
复制代码

  mysqldump -u root -p student
>d:/yebihai.sql

  b)导出一个表

  mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名

方案二:分块导入

代码如下
复制代码

<?
//用来快速Mysql的大数据备份
//使用前请首先按照代码注释修改要导入的SQL文件名、数据库主机名、数据库用户名、密码、数据库名
//同时将数据库文件和本文本一起ftp导网站目录,然后以web方式访问此文件即可

$file_name="sql.sql"; //要导入的SQL文件名

$dbhost="localhost"; //数据库主机名
$dbuser="user"; //数据库用户名

$dbpass="pass"; //数据库密码
$dbname="dbname";
//数据库名

set_time_limit(0); //设置超时时间为0,表示一直执行。当php在safe
mode模式下无效,此时可能会导致导入超时,此时需要分段导入
$fp = @fopen($file_name, "r") or
die("不能打开SQL文件 $file_name");//打开文件
mysql_connect($dbhost, $dbuser,
$dbpass) or die("不能连接数据库 $dbhost");//连接数据库
mysql_select_db($dbname)
or die ("不能打开数据库 $dbname");//打开数据库
mysql_query('set names utf8');

echo "正在执行导入操作";
while($SQL=GetNextSQL()){
if
(!mysql_query($SQL)){
echo
"执行出错www.111cn.net:".mysql_error()."
";
echo
"SQL语句为:
".$SQL."
";
};
}
echo
"导入完成";

fclose($fp) or die("Can’t close file $file_name");//关闭文件

mysql_close();

//从文件中逐条取SQL
function GetNextSQL() {

global $fp;
$sql="";
while ($line =
@fgets($fp, 40960)) {
$line =
trim($line);

//以下三句在高版本php中不需要,在部分低版本中也许需要修改
$line =
str_replace("////","//",$line);
$line =
str_replace("/’","’",$line);
$line =
str_replace("//r//n",chr(13).chr(10),$line);
// $line
= stripcslashes($line);
if (strlen($line)>1)
{
if ($line[0]=="-" && $line[1]=="-")
{

continue;
}

}

$sql.=$line.chr(13).chr(10);
if
(strlen($line)>0){
if
($line[strlen($line)-1]==";"){

break;
}

}
}
return $sql;

}
?>

方案三:客户端用source命令操作

  比较好的办法仍是用mysql的source命令:

  一、在客户端下操作:

  1、进行入客户端

  

代码如下
复制代码

2、mysql>use 数据库名(如果没有,先建一个)

  3、mysql>set names 'utf8'; (一般看导入的是什么格式的文件)

  4、mysql>source d:/aaa.sql;

  即可正常导入,如果有错,可以看出错提示

  二、PHP文件操作:

  建立a.php

  里面有下面内容

 

代码如下
复制代码

 mysql_connet('xxxx');

  mysql_query("set names 'utf8'");

  mysql_query("source d:/aaa.sql'");

  原理同上,主要方便了无法使用命令行用户的操作

方案四:下面教大家一个简单有效的办法,适合不会使用命令窗口的非技术人员,可以导入任意大小的mysql数据库,理论上不论您的数据库备份文件多大,都可以导入  

  方法如下:

  1.将数据库备份文件(如backup.sql)上传至网站根目录。

  2.将以下代码保存为mysql.php文件,上传至网站根目录。

代码如下
复制代码

  system("mysql -hdbhost -udbuser -ppassword dbname < backup.sql");

  print "导入成功";

  其中

  dbhost 改为您的数据库服务器地址(小提示:一般主机默认数据库服务器地址是:localhost)

  dbuser 改为您的数据库用户名

  password 改为您的数据库用户密码

  dbname 改为您的数据库名(导入的时候此库必须先建立好,否则会失败并且不会进行任何提示)

  backup.sql表示通过ftp上传到网站根目录下数据库文件的文件名(该文件是解压缩后的文件)

  3.在浏览器里面访问mysql.php, 那么就在浏览器里面输入/mysql.php,只要浏览器一访问这个mysql.php文件,数据就开始导入,数据导入结束后,就会显示“导入成功”的字样。这个时间根据您要导入的数据大小决定,一般时间很短2016-08-01
mengvlog 阅读 9 次 更新于 2025-07-19 16:46:40 我来答关注问题0
  • 首先,要安装安装MySQL以及MySQL Workbench,以支持SQL文件的导入。安装完成后,接下来就是要准备需要导入的大型数据库文件。然后,打开MySQL Workbench,单击连接按键,输入服务器实例的用户名和密码,即可进入该服务器实例页面。然后,在该实例页面中,单击File -> Run SQL File。这样就可以找到准备导入的文...

  • 方案一:客户端直接命令操作(此方法是我比较喜欢的)刚恢复一个电商网站mysql备份数据,此备份文件有300多M,因为phpmyadmin支持上传有限,文件太大IE停止响应,所以在本地用 代码如下 复制代码 mysql -u root -p root jiahuibuydb< c:/yebihai.sql 但没导入进去,出来一大堆mysql的参数提示,不认输入...

  • 那么,该如何快速地将大量的数据插入到MySQL数据库中呢?我们可以使用以下几种方法:1. 使用批量插入语句 在MySQL中,可以使用INSERT INTO TABLE (字段1,字段2……) VALUES (值1,值2……),来单个地插入数据。但是,如果数据量很大,单个插入显然会比较慢。因此,我们可以使用批量插入语句,一次性插...

  • 一、数据库的导入(还原)1、source命令1)打开开始菜单->程序->MySQL->MySQL Command Line Client,输入MySQL的root密码。2)然后输入use 数据库名;进入对应的数据库,再用source 备份文件具体路径;命令导入备份文件。注意,在这里的命令后面都要加;分号,截图如下:2、mysql命令1)如果是Windows系统,...

  •  深空见闻 sql文件太大怎么导入

    使用命令行工具:这是推荐的方法,通过命令行执行mysql -u username -p database_name < /path/to/file.sql命令,可以高效地将大SQL文件导入数据库。此外,还可以根据需要指定主机、端口和字符集等选项。分割文件:如果SQL文件过大,可以考虑将其拆分成多个较小的文件,以减少单次数据传输的负荷。可以...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部