我在 MySQL 服务器上有表,并且想获取将重新创建表的 SQL。
如何获取查询以重新创建 SQL 表?
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。
mysqldump 可以做到 - http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html
你可以像这样使用它:
mysqldump [databasename] [tablename] > mysqltablesql.sql
如果您使用的是 phpMyAdmin,请选择一个表,然后单击“导出”选项卡。一种输出类型是 SQL。选择此项将生成一个 SQL 脚本来创建表并插入表中当前的所有数据。确保在转储数据选项下选择“结构和数据”
mysqldump [OPTIONS] 数据库 [tables]>backup-file.sql
如果您不提供任何表或使用 --databases 或 --all-databases,则将转储整个数据库。
您可以通过执行 mysqldump --help 来获取您的 mysqldump 版本支持的选项列表。
请注意,如果您在没有 --quick 或 --opt 的情况下运行 mysqldump,mysqldump 将在转储结果之前将整个结果集加载到内存中。如果您要转储大型数据库,这可能会成为一个问题。
如果您有权访问 phpMyAdmin,则可以通过所需表上的“导出”选项卡获取此代码。
选择 SQL,然后确保导出“结构”(“创建表”代码)和“数据”(“插入”代码),导出类型设置为“插入”。
我会选择@liamgriffiths 的提议mysqldump
,但你也可以尝试create table <new-table-name> like <old-table-name>
跟随insert into <new-table-name> select * from <old-table-name>