导出SQL表的简单方法,而无需访问服务器或phpMyADMIN
2022-08-30 15:02:55
我需要一种方法来轻松地将MySQL表中的数据从远程服务器导出然后导入到我的主服务器。我无法直接访问服务器,也没有安装phpMyAdmin等实用程序。但是,我确实有能力将PHP脚本放在服务器上。
如何获取数据?
我问这个问题纯粹是为了记录我的方式
我需要一种方法来轻松地将MySQL表中的数据从远程服务器导出然后导入到我的主服务器。我无法直接访问服务器,也没有安装phpMyAdmin等实用程序。但是,我确实有能力将PHP脚本放在服务器上。
如何获取数据?
我问这个问题纯粹是为了记录我的方式
您可以使用 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);
我通过导出到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;
}