mysql里是放php文件吗_如何使用php在mysql数据库中导入.sql文件

Raj的答案很有用,但是(由于file($ filename))如果您的mysql-dump不适合内存,它将失败

如果您在共享主机上,并且有30 MB和12s脚本运行时之类的限制,并且必须还原x00MB mysql dump,则可以使用以下脚本:

它将在转储文件查询中进行查询,如果脚本执行截止日期临近,它将当前文件位置保存在tmp文件中,并且自动重新加载浏览器将一次又一次地继续此过程...如果发生错误,则重新加载将停止并显示错误...

如果您从午餐回来,您的数据库将恢复;-)

noLimitDumpRestore.php:

// your config

$filename = 'yourGigaByteDump.sql';

$dbHost = 'localhost';

$dbUser = 'user';

$dbPass = '__pass__';

$dbName = 'dbname';

$maxRuntime = 8; // less then your max script execution limit

$deadline = time()+$maxRuntime;

$progressFilename = $filename.'_filepointer'; // tmp file for progress

$errorFilename = $filename.'_error'; // tmp file for erro

mysql_connect($dbHost, $dbUser, $dbPass) OR die('connecting to host: '.$dbHost.' failed: '.mysql_error());

mysql_select_db($dbName) OR die('select db: '.$dbName.' failed: '.mysql_error());

($fp = fopen($filename, 'r')) OR die('failed to open file:'.$filename);

// check for previous error

if( file_exists($errorFilename) ){

die('

 previous error: '.file_get_contents($errorFilename));

}

// activate automatic reload in browser

echo '

';

// go to previous file position

$filePosition = 0;

if( file_exists($progressFilename) ){

$filePosition = file_get_contents($progressFilename);

fseek($fp, $filePosition);

}

$queryCount = 0;

$query = '';

while( $deadline>time() AND ($line=fgets($fp, 1024000)) ){

if(substr($line,0,2)=='--' OR trim($line)=='' ){

continue;

}

$query .= $line;

if( substr(trim($query),-1)==';' ){

if( !mysql_query($query) ){

$error = 'Error performing query \'' . $query . '\': ' . mysql_error();

file_put_contents($errorFilename, $error."\n");

exit;

}

$query = '';

file_put_contents($progressFilename, ftell($fp)); // save the current file position for

$queryCount++;

}

}

if( feof($fp) ){

echo 'dump successfully restored!';

}else{

echo ftell($fp).'/'.filesize($filename).' '.(round(ftell($fp)/filesize($filename), 2)*100).'%'."\n";

echo $queryCount.' queries processed! please reload or wait for automatic browser refresh!';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值