2009-11-12 267 views
6

我想使用PHP从MySQL数据库导出数据和结构。我知道SELECT INTO OUTFILE命令,但我想要的文件类似于在导出窗口中由PhpMyAdmin生成的文件,因此所有CREATE TABLEINSERT INTO导出结构和数据(如在PhpMyAdmin中)

H您知道PhpMyAdmn如何生成这些文件吗?我正在浏览代码,并在其中找到了命令SELECT INTO OUTFILE。但我不确定这个命令是否用于生成该结构。是否有其他命令来执行此操作,或者使用有关表模式的信息手动创建导出的文件?

+0

有一天,我需要写的答案正确之前先读问题。在我注意到您要求PHP解决方案之前,我建议使用'mysqldump'。 – 2009-11-12 16:47:26

+0

所以我......系统('mysqldump')'是PHP虽然,这不符合? – Wim 2009-11-12 16:49:52

+0

不幸的是,我的服务器上禁用了'system'功能。 – 2009-11-12 16:52:44

回答

7

您可以使用SHOW CREATE TABLE来做到这一点。

+0

谢谢。我不知道这个命令。数据如何?有没有插入生成器? – 2009-11-12 16:49:41

+0

没什么我知道的,但可以根据表结构和SELECT的结果轻松生成INSERT语句。 – candiru 2009-11-12 16:55:55

4

我做了一个php脚本来备份mysql表(仅限数据)。这将MySQL的数据导出到一个SQL文件,该文件是用phpmyadmin的进口完全兼容

可能是这可以帮助你

mysql data backup script in php: http://dl.dropbox.com/u/18434517/mysql_backup.php

+0

这不完全全面:'$ lines。=“'”。 str_replace(“\ n”,“\\ n”,$ datas [$ i])。 “'”'' 你最好使用'mysql_real_escape_string'或'mysqli_real_escape_string'来代替。 – bart 2012-06-12 14:17:30

+0

这是一个很好的脚本。如果是mysql改进(mysqli)则更好。普通版本正在慢慢被弃用。 – David 2013-02-14 17:51:08

2

在这里你可以找到一个全面的解决方案来转储mysql的结构和数据,如在PMA(和不使用EXEC,中继等):

https://github.com/antarasi/MySQL-Dump-with-Foreign-keys

它与我的增强dszymczuk项目的叉。

的用法很简单

<?php 
//MySQL connection parameters 
$dbhost = 'localhost'; 
$dbuser = 'dbuser'; 
$dbpsw = 'pass'; 
$dbname = 'dbname'; 

//Connects to mysql server 
$connessione = @mysql_connect($dbhost,$dbuser,$dbpsw); 

//Set encoding 
mysql_query("SET CHARSET utf8"); 
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'"); 

//Includes class 
require_once('FKMySQLDump.php'); 


//Creates a new instance of FKMySQLDump: it exports without compress and base-16 file 
$dumper = new FKMySQLDump($dbname,'fk_dump.sql',false,false); 

$params = array(
    //'skip_structure' => TRUE, 
    //'skip_data' => TRUE, 
); 

//Make dump 
$dumper->doFKDump($params); 

?> 

的作品就像一个魅力:-)