无需访问服务器或者phpMyADMIN即可轻松导出SQL表的简便方法
我需要一种方法,可以轻松地将MySQL表中的数据从远程服务器导出然后导入到我的家庭服务器。我没有直接访问服务器的权限,没有安装任何实用程序,例如phpMyAdmin。但是,我确实可以将PHP脚本放在服务器上。
我如何获得数据?
我问这个问题纯粹是为了记录我的做事方式
解决方案
回答
我是通过导出为CSV来实现的,然后使用任何可用的实用程序进行导入。我非常喜欢使用php:// output流。
$result = $db_con->query('SELECT * FROM `some_table`'); $fp = fopen('php://output', 'w'); if ($fp && $result) { header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="export.csv"'); while ($row = $result->fetch_array(MYSQLI_NUM)) { fputcsv($fp, array_values($row)); } die; }
回答
如果我们具有FTP / SFTP访问权限,则可以继续并自己上传phpMyAdmin。
我正在使用这个小程序包从只有FTP访问权限的服务器上进行自动mysql备份:
http://www.taw24.de/download/pafiledb.php?PHPSESSID=b48001ea004aacd86f5643a72feb2829&action=viewfile&fid=43&id=1
该站点为德语,但下载中也包含一些英语文档。
一个快速的谷歌也发现了这一点,但我自己没有用过:
http://snipplr.com/view/173/mysql-dump/
回答
我们可以为此使用SQL:
$file = 'backups/mytable.sql'; $result = mysql_query("SELECT * INTO OUTFILE '$file' FROM `##table##`");
然后,只需将浏览器或者FTP客户端指向目录/文件(backups / mytable.sql)。这也是进行增量备份的好方法,例如,给文件名加上时间戳。
要将其从该文件恢复到数据库中,可以使用:
$file = 'backups/mytable.sql'; $result = mysql_query("LOAD DATA INFILE '$file' INTO TABLE `##table##`");
另一个选择是使用PHP在服务器上调用系统命令并运行'mysqldump':
$file = 'backups/mytable.sql'; system("mysqldump --opt -h ##databaseserver## -u ##username## -p ##password## ##database | gzip > ".$file);
回答
我通过命令行使用mysqldump:
exec("mysqldump sourceDatabase -uUsername -p'password' > outputFilename.sql");
然后,我们只需下载生成的文件并完成即可。
回答
我们可以考虑查看以下网址:http://www.webyog.com
这是一个很棒的GUI管理工具,并且它们具有真正整洁的HTTP隧道功能(我不确定这是否仅在企业中花费几美元)。
基本上,我们将它们提供的脚本上载到网站空间(php脚本),然后将sqlyog管理器指向它,然后我们就可以访问数据库。它使用此脚本在家庭客户端和服务器之间建立隧道/代理请求/查询。
我知道至少有1个人使用此方法取得了很好的效果。
回答
我们还应该考虑phpMinAdmin,它只是一个文件,因此易于上载和设置。