我需要导出一个巨大的数据库,有成千上万的表和数百万行。 我在共享主机,所以我不能使用命令行导出,我真的没有简单的方法来获得这个数据,而不是通过phpMyAdmin或PHP。 cPanel的默认“导出数据库”工具不起作用,它导出一个空白的数据库。 phpMyAdmin的导出为gzip或zip也给出了一个空白的数据库。
现在我已经下载了这个SQL文件几个小时,而且只有大约2GB的实际数据的114MB。
我(安全地)导出所有数据的最佳方式是什么? 这实在是一个巨大的痛苦,没有数据可以丢失,但必须将其导出。 有没有我可以使用的脚本或程序?
你能直接访问数据库吗? MySqlDump.exe将在一个紧要关头远程工作。
看一眼 :
http://www.siteground.com/tutorials/php-mysql/mysql_export.htm
你会发现一个教程,将教你如何使用phpMyAdmin导出数据库,默认安装在cPanel上 。
此外,cpanel有一个备份function,只允许您备份数据库
https://yourdomain.com:2083/frontend/x3/backup/wizard-backup-type.html?type=mysql
或者,您可以尝试使用以下function(从http://davidwalsh.name/backup-mysql-database-php中盗取):
backup_tables('localhost','username','password','blog'); /* backup the db OR just a table */ function backup_tables($host,$user,$pass,$name,$tables = '*') { $link = mysql_connect($host,$user,$pass); mysql_select_db($name,$link); //get all of the tables if($tables == '*') { $tables = array(); $result = mysql_query('SHOW TABLES'); while($row = mysql_fetch_row($result)) { $tables[] = $row[0]; } } else { $tables = is_array($tables) ? $tables : explode(',',$tables); } //cycle through foreach($tables as $table) { $result = mysql_query('SELECT * FROM '.$table); $num_fields = mysql_num_fields($result); $return.= 'DROP TABLE '.$table.';'; $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table)); $return.= "\n\n".$row2[1].";\n\n"; for ($i = 0; $i < $num_fields; $i++) { while($row = mysql_fetch_row($result)) { $return.= 'INSERT INTO '.$table.' VALUES('; for($j=0; $j<$num_fields; $j++) { $row[$j] = addslashes($row[$j]); $row[$j] = ereg_replace("\n","\\n",$row[$j]); if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; } if ($j<($num_fields-1)) { $return.= ','; } } $return.= ");\n"; } } $return.="\n\n\n"; } //save file $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+'); fwrite($handle,$return); fclose($handle); }
当然,您需要为函数提供数据库凭证,以及要备份的数组表。 如果你提供了一个“*”或没有表,一个完整的数据库备份将运行。 其余的脚本呢!
不要忘记添加set_time_limit(0);
到包含backup_tables()
函数的php文件。
GL!
你可以尝试使用mysqldumper。 这是一个脚本,下载你的数据库的一部分,记住它停在哪里,再次调用自己,并继续下载。
这里是链接: http : //www.mysqldumper.net/