23

我在 MySQL 服务器上有表,并且想获取将重新创建表的 SQL。

如何获取查询以重新创建 SQL 表?

4

6 回答 6

65

MySQL 支持SHOW CREATE TABLE返回用于创建表的 SQL。

从他们的文档中:

mysql> SHOW CREATE TABLE t;
CREATE TABLE t (
  id INT(11) default NULL auto_increment,
  s char(60) default NULL,
  PRIMARY KEY (id)
) ENGINE=MyISAM

如果您只有与数据库的连接,而不是服务器上的 CLI,这将很有用。如果您有 CLI,请像 liamgriffiths 推荐的那样使用 mysqldump。

于 2011-08-08T14:38:14.800 回答
16

mysqldump 可以做到 - http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

你可以像这样使用它:

mysqldump [databasename] [tablename] > mysqltablesql.sql
于 2011-08-08T14:14:55.050 回答
8

如果您使用的是 phpMyAdmin,请选择一个表,然后单击“导出”选项卡。一种输出类型是 SQL。选择此项将生成一个 SQL 脚本来创建表并插入表中当前的所有数据。确保在转储数据选项下选择“结构和数据”

于 2011-08-08T14:13:51.727 回答
2

mysqldump [OPTIONS] 数据库 [tables]>backup-file.sql

如果您不提供任何表或使用 --databases 或 --all-databases,则将转储整个数据库。

您可以通过执行 mysqldump --help 来获取您的 mysqldump 版本支持的选项列表。

请注意,如果您在没有 --quick 或 --opt 的情况下运行 mysqldump,mysqldump 将在转储结果之前将整个结果集加载到内存中。如果您要转储大型数据库,这可能会成为一个问题。

于 2011-08-09T10:55:01.077 回答
1

如果您有权访问 phpMyAdmin,则可以通过所需表上的“导出”选项卡获取此代码。

选择 SQL,然后确保导出“结构”(“创建表”代码)和“数据”(“插入”代码),导出类型设置为“插入”。

于 2011-08-08T14:13:33.100 回答
0

我会选择@liamgriffiths 的提议mysqldump,但你也可以尝试create table <new-table-name> like <old-table-name>跟随insert into <new-table-name> select * from <old-table-name>

于 2011-08-08T14:38:17.807 回答