35

我正在做一些数据库方面的事情,我需要将一个表从一个模型复制到另一个模型,但我尝试了很多方法都没有效果。有没有办法做到这一点?

4

10 回答 10

41

如果你只想通过 MySQL Workbench 做一个表。

在 MySQL 工作台中:

  1. 连接到 MySQL 服务器
  2. 扩展数据库
  3. 右键单击一个表
  4. 选择复制到剪贴板
  5. 选择创建语句

该表的创建语句将被复制到您的剪贴板,如下所示:

   CREATE TABLE `cache` (
  `cid` varchar(255) NOT NULL DEFAULT '',
  `data` longblob,
  `expire` int(11) NOT NULL DEFAULT '0',
  `created` int(11) NOT NULL DEFAULT '0',
  `headers` text,
  `serialized` smallint(6) NOT NULL DEFAULT '0',
  PRIMARY KEY (`cid`),
  KEY `expire` (`expire`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

在新数据库中创建表

  1. 为执行查询打开一个新的 SQL 选项卡(文件->新建查询选项卡)
  2. 更改创建表代码以包含要在其上创建表的数据库。

     CREATE TABLE `databaseName`.`cache` (
      `cid` varchar(255) NOT NULL DEFAULT '',
      `data` longblob,
      `expire` int(11) NOT NULL DEFAULT '0',
      `created` int(11) NOT NULL DEFAULT '0',
      `headers` text,
      `serialized` smallint(6) NOT NULL DEFAULT '0',
      PRIMARY KEY (`cid`),
      KEY `expire` (`expire`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

  3. 然后单击执行按钮(看起来像闪电)

这将使用 MySQL 工作台将表模式从一个数据库复制到另一个数据库。只需刷新数据库中的表,您应该会看到新添加的表

于 2014-08-26T16:21:10.713 回答
22

您最好的选择可能是创建模型的精简版本,其中包含您要继承的对象。然后打开目标模型并运行File -> Include Model...。选择精简的源模型,然后就可以了。

于 2013-06-15T08:47:13.497 回答
20
  1. 选择带有源数据库的选项卡
  2. 在菜单中:服务器->数据导出
  3. 选择架构和表作为架构对象
  4. 选择选项导出到独立文件并选中在单个事务中创建转储(仅独立)
  5. 将完整文件路径复制到剪贴板
  6. 开始导出
  7. 选择带有目标数据库的选项卡
  8. 在菜单中:服务器->数据导入。确保您的目标数据库名称位于数据导入视图的左上角
  9. 选择从自包含文件导入并从剪贴板粘贴完整文件路径
  10. 选择默认目标架构
  11. 选择转储内容(转储结构和数据等...)
  12. 开始导入
于 2016-10-05T16:08:16.447 回答
16

您可以只使用 select 语句。在这里,我正在创建从“original_schema”模式/数据库到“new_schema”模式的“original_table”表的副本:

CREATE TABLE new_schema.duplicate_table AS
Select * from original_schema.original_table;

您可以放置​​任何您需要的选择语句,添加条件并选择列:

CREATE TABLE new_schema.duplicate_table AS
SELECT column1, column2       
FROM original_schema.original_table
WHERE column2 < 11000000;
于 2019-01-29T12:13:43.700 回答
3

我认为值得一提的是

  1. 复制的表可能会引用原始模式的表中的字段,这些字段在要复制的模式中不存在。在将表添加到其他模式之前,检查表是否存在这些差异可能是一个好主意。
  2. 检查引擎兼容性(例如 InnoDB 与 MyISAM)和字符集可能是个好主意。
于 2017-11-24T10:55:36.253 回答
2

如果您已经创建了表并且只想复制数据,我建议您使用“导出数据向导”和“导入数据向导”。它基本上是在程序中选择东西进行导出然后导入数据,并且易于使用。

MySQL 在这里有一篇关于向导的文章:表数据导出和导入向导

要使用向导复制数据,请执行以下操作:

  1. 在列表中找到要从中复制数据的表。
  2. 右键单击并选择“表数据导出向导”。
  3. 选择要复制的列。
  4. 选择一个位置以保存带有复制数据的 *.csv 或 *.json 文件。

  5. 找到要将复制的数据插入到的表。

  6. 右键单击并选择“表数据导入向导”。
  7. 选择刚刚导出的文件。
  8. 将您复制的表中的列映射到您插入的表。
  9. 按“完成”。数据按照您的选择插入。
于 2019-05-12T21:27:21.497 回答
1

第 1 步:右击表格 > 复制到剪贴板 > 创建语句

第二步:将剪贴板粘贴到工作台的查询字段中。

第 3 步:从表的名称和模型(模式)的名称中删除 (``),后跟一个点。

例如:`cusine_menus` -> schema_name.cusine_menus

执行

于 2019-11-07T13:23:35.050 回答
0

像 .m_property_nature 一样创建表 .m_property_nature;

插入到 .m_property_nature 选择 * 从 .m_property_nature;

于 2018-09-20T09:45:35.953 回答
0

您可以从表信息中获取 crate 表查询,并在不同的数据库实例上使用相同的查询。

  1. 显示创建表 TABLENAME.content 并复制查询;
  2. 在连接的另一个数据库实例上运行生成的查询。
于 2018-12-31T05:53:58.223 回答
0

在这篇文章中,我们将向您展示如何在 MySQL 中复制表

首先,此查询将复制数据和结构,但不包括索引:

CREATE TABLE new_table SELECT * FROM old_table;

其次,此查询将复制表结构和索引,但不复制数据:

CREATE TABLE new_table LIKE old_table;

因此,要复制所有内容,包括索引、主键约束、外键约束、触发器等数据库对象,请运行以下查询:

CREATE TABLE new_table LIKE old_table; 
INSERT new_table SELECT * FROM old_table;

如果要将表从一个数据库复制到另一个数据库:

CREATE TABLE destination_db.new_table LIKE source_db.old_table;

INSERT destination_db.new_table
SELECT
    *
FROM
    source_db.old_table;
于 2021-08-22T11:33:24.360 回答