有什么方法可以导出MYSQL数据库的表结构?帮忙急
用PHP程序完成,

解决方案 »

  1.   

    $sql = 'SHOW CREATE TABLE `tblName`';
    $result = $mysqli->query($sql);
    $row = $result->fetch_array();
    echo $row['Create Table'];
      

  2.   

    兄弟能否说的详细点啊,直接把你的这个代码保存成.PHP文件,然后运行吗??
      

  3.   

    可以考虑用MYSQL自带的mysqldump备份还原工具.
    命令行下执行:
       mysqldump -u mysql用户名 -p 密码 test -d > d:\test.sql
       
    OK,D盘下就生成了一个只包含test数据库里表结构的文件了。如果只想要数据可以用-t
      

  4.   

    我现在用不了mysqldump命令,
    phpmyadmin也没法上传,
    我现在能传一个PHP文件,主要能实现把数据库表结构导出为.sql文件就行了
      

  5.   

    //当然得先连接数据库。。
    $mysqli = new mysqli($db_host,$db_user,$db_pwd,$db_name);
    $sql = 'SHOW CREATE TABLE `tblName`';
    $result = $mysqli->query($sql);
    $row = $result->fetch_array();
    echo $row['Create Table'];如果有写权限,可以把内容输出到文件中,没有写权限的话就把输出内容手工复制到一个文件中
      

  6.   

    兄弟你的这个代码$db_host,$db_user,$db_pwd,$db_name 用户名和密码在哪里输入啊
    还是直接就这样保存为PHP然后运行
      

  7.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head><body>
    <?php//把这些代码保存为一个php文件$mysqli = new mysqli('localhost','你的数据库用户名','你的数据库登录密码','你的数据库名');
    $sql = 'SHOW CREATE TABLE `你的数据表名`';
    $result = $mysqli->query($sql);
    $row = $result->fetch_array();
    echo $row['Create Table'];?>
    </body>
    </html>
      

  8.   

       这什么空间啊?命令行没有命令行,就连最基本的phpmyadmin都没有!晕,如果是虚拟空间肯定都有phpmyadmin的,向你的空间商咨询一下吧!如果是自己的服务器那更没有问题了。
       自己用PHP代码导出的数据虽然也可以,但是很麻烦,数据量多的时候会不稳定,而且格式还得重来过!不推荐使用。
      

  9.   

    这个可以,然后需要用手动保存到SQL或txt。显示结果为类似:
    CREATE TABLE `test1` ( `id` int(10) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `price` decimal(20,2) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8
    或者你刚催直接生成SQL文件:
    <?php$mysqli = new mysqli('localhost','root','root','test');
    $sql = 'SHOW CREATE TABLE `test1`';
    $result = $mysqli->query($sql);
    $row = $result->fetch_array();
    file_put_contents('wdf.sql',$row['Create Table']); //直接生成同目录下的wdf.sql文件,内容是表结构
    //echo $row['Create Table'];
      

  10.   

    <?php//把这些代码保存为一个php文件$mysqli = new mysqli('localhost','mysql用户名','密码','test');
    $sql = 'SHOW CREATE TABLE `test数据库内表名称`';
    $result = $mysqli->query($sql);
    $row = $result->fetch_array();
    file_put_contents('mysql.sql',$row['Create Table']);//直接生成同目录下的表结构导出文件sql
    ?>
      

  11.   

    如果你的空间连mysqli扩展都没有的话,那应该肯定有mysql:
    <?php//把这些代码保存为一个php文件mysql_connect('localhost','root','wdf');
    mysql_select_db('test');
    $sql = 'SHOW CREATE TABLE `jiang`';
    $result = mysql_query($sql);
    $row = mysql_fetch_array($result);
    file_put_contents('wdf.sql',$row['Create Table']);?>
      

  12.   

      如果没有其他要补充的了,那么你看看这个,绝对OK,不要搞错对象就可以了!目标备份数据库test下所有表的结构,并保存到同目录下mysql.sql文件里,效果和mysqldump!添加了备份操作时间!
       
    mysql_connect('localhost','root','root'); //数据库用户名,密码!
    mysql_select_db('test');//选择要备份的数据库,我这里是test
    $sql1 = 'SHOW tables';
    $result = mysql_query($sql1);
    $T=date("Y-m-d H:i:s");
    $str="--PHP代码方式执行MYSQL数据库表结构备份  操作时间:$T\r\n\r\n";
    while($row = mysql_fetch_array($result))
    {
      $tablename=$row['Tables_in_test'];
      $sql2="show create table $tablename";
      $result2 = mysql_query($sql2);
      $row2 = mysql_fetch_array($result2);
      $str=$str.$row2['Create Table']."\r\n\r\n";
    }
    file_put_contents('wdf.sql',$str);   
      
      

  13.   


    兄弟按你的方法出现下列错误提示(数据库很大,表很多)
    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /srv/phpMailer/test/.svn/prop-base/2.php on line 22 Warning: mysql_fetch_array() expects parameter 1 to be resource,
      

  14.   

    while($row = mysql_fetch_array($result))
    {
      $tablename=$row['Tables_in_test'];
      $sql2="show create table $tablename";
      $result2 = mysql_query($sql2) or die ("sql语句$sql2执行错误".mysql_error());
      var_dump($result2);//看看结果有没有获取出来resource!如果没有,那肯定是前面获取出错了。
      $row2 = mysql_fetch_array($result2);
      $str=$str.$row2['Create Table']."\r\n\r\n";
    }
      

  15.   

    我的机器是5个表,有2种表引擎innodb,myisam,实册都可以。没有出现你说的情况。你的SQL版本是多少!
    先拿个数据库表少的测试一下,如果没有问题,说明问题不在代码上,而是你其他问题!
      

  16.   

    你的操作系统不是WINDOWS下的?LINUX的系统??如果是LINUX那么那2个字段都不能那么取!Create Table,Tables_in_test!
      

  17.   

    系统是LINUX的,数据库是5.1.49的 
    那2个字段都不能那么取!Create Table,Tables_in_test!
    是把这两个字段删除吗?
      

  18.   


    按这个方法设置了,出现下面的
    sql语句You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
      

  19.   

    可以装个软件来备份数据库呀,用MYSQL-FONT,我一直在有这软件,挺好用的。
      

  20.   

    不好意思,下面的字段名称被我固定模式了。修改一下PHP代码为:
       
    <?php
    //把这些代码保存为一个php文件
    $database='mysql'; //选择要进行的备份的数据库名称,还有下面的mysql用户密码,其他不变就可以了。
    mysql_connect('localhost','root','root');
    mysql_select_db($database);
    $sql1 = 'SHOW tables';
    $result = mysql_query($sql1) or die ("sql语句$sql1执行错误");
    $T=date("Y-m-d H:i:s");
    $str="--PHP代码方式执行MYSQL数据库表结构备份  操作时间:$T\r\n\r\n";
    while($row = mysql_fetch_array($result))
    {
      $tablename=$row["Tables_in_$database"];
      $sql2="show create table $tablename";
      $result2 = mysql_query($sql2) or die ("sql语句$sql2执行错误".mysql_error());
      $row2 = mysql_fetch_array($result2);
      $str=$str.$row2['Create Table']."\r\n\r\n";
    }
    file_put_contents('wdf.sql',$str);
    ?>
       
    你用这个测试一下应该OK了。不管你换哪个数据库名称都可以,包括mysql系统自带的mysql数据库!
      

  21.   


    兄弟非常感谢你的帮助,现在数据库表结构已经导出来了
    只是有个问题,里面有很多问号,这是怎么回事
    我数据库里有utf8格式的还有latin1格式的,是不是这个原因
    下面是我截取的其中一段
    CREATE TABLE `to_weituo` (
      `wid` int(11) unsigned NOT NULL auto_increment COMMENT '??????ID',
      `uid` int(11) NOT NULL default '0' COMMENT '?????ID',
      `zb_cgate` tinyint(2) NOT NULL default '0' COMMENT '1????2????',
      `zb_type` tinyint(2) NOT NULL default '0' COMMENT '????1????2????3????',
      `zb_stype1` tinyint(2) NOT NULL default '0' COMMENT '???????1??2??3??',
      `zb_stype2` tinyint(2) NOT NULL default '0' COMMENT '???????1?????2???????3????????4??????????5????6?????????',
      `zb_price1` tinyint(2) NOT NULL default '0' COMMENT '??????',
      `zb_price2` tinyint(2) NOT NULL default '0' COMMENT '??????',
      `zb_name` varchar(100) character set utf8 NOT NULL default '' COMMENT '????',
      `zb_area` int(8) NOT NULL default '0' COMMENT '????',
      `shen` varchar(32) character set utf8 NOT NULL default '' COMMENT '???',
      `city` varchar(32) character set utf8 NOT NULL default '' COMMENT '????',
      `zb_hometype` tinyint(3) NOT NULL default '0' COMMENT '????',
      `zb_zonetype` varchar(50) character set utf8 NOT NULL default '' COMMENT '????????(?????)',
      `zb_dangchi` tinyint(2) NOT NULL default '0' COMMENT '????1?2?3??',
      `zb_style` varchar(150) character set utf8 NOT NULL default '' COMMENT '???????????????1?2?3?4?',
      `ftime` int(10) NOT NULL default '0' COMMENT '??????',
      `zx_yaoqiu` text character set utf8 NOT NULL COMMENT '????',
      `sj_yaoqiu` text character set utf8 NOT NULL COMMENT '????',
      `email` varchar(120) character set utf8 NOT NULL default '' COMMENT 'Email',
      `phone` char(16) character set utf8 NOT NULL default '' COMMENT '??',
      `mobile` char(11) character set utf8 NOT NULL default '' COMMENT '??',
      `qq` char(20) character set utf8 NOT NULL default '' COMMENT 'Q Q',
      `ispass` tinyint(2) NOT NULL default '0' COMMENT '??????1?????0???',
      `tb_nums` mediumint(4) NOT NULL default '0' COMMENT '???',
      `usejidian` mediumint(7) NOT NULL default '0' COMMENT '????',
      `sourceid` mediumint(3) NOT NULL default '0' COMMENT '??????',
      `puttime` int(10) NOT NULL default '0' COMMENT '????',
      PRIMARY KEY  (`wid`)
    ) ENGINE=MyISAM AUTO_INCREMENT=4373 DEFAULT CHARSET=latin1
      

  22.   

    1、如果你需要真实的备份数据库,建议你采用 帝国数据库备份系统
    2、如果你只是想学习一下,自然可以自己尝试一下。但首先要掌握好 mysql 的基础知识
    你在#30、#31的回帖,表示你对 mysql 的语言编码机制不甚了了
      

  23.   

    不好意思,我刚接触MYSQL,
    我看了一下,错误好像是MYSQL版本的问题,我现在正在升级版本
    但导出来的数据表结构里很多问号,请问这个也是正常的吗?
      

  24.   

    那是 mysql 特有的语言编码机制造成的,你在输入和输出时没有使用正确的编码就会是这样
      

  25.   

    看一下你的mysql编码:show variables like '%char%';
    将my.conf中latin1换成utf8