我正在做一些数据库的事情,我需要从一个模型复制一个表到另一个,但我尝试了很多方法没有效果。有什么办法可以做到吗?
如果您只是想通过MySQL Workbench处理单个表
MySQL Workbench:
- 连接MySQL服务器
- 扩展数据库
- 右键单击表格
- 选择复制到剪贴板
- 选择Create Statement
表的create语句将复制到剪贴板中,如下所示:
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;
在新数据库中创建表
- 打开一个新的SQL选项卡来执行查询(File-> new Query tab)
修改create table代码,使其包含要创建表的数据库。
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;
然后点击执行按钮(看起来像闪电)
将使用MySQL工作台将表模式从一个数据库复制到另一个数据库。只需刷新数据库中的表,您应该会看到新添加的表
- 选择源数据库选项卡
- 在菜单中:Server->Data Export
- 选择模式和表作为模式对象
- 选择"导出到自包含文件"选项,并勾选"在单个事务中创建转储"(仅限自包含)
- 复制完整的文件路径到剪贴板
- 开始出口
- 选择目标数据库选项卡
- 菜单:服务器->数据导入。确保您的目标数据库名称位于Data Import视图 的左上角
- 选择从自包含文件导入,并从剪贴板粘贴完整的文件路径
- 选择默认目标架构
- 选择转储内容(转储结构和数据等)
- 开始导入
您最好的选择可能是创建一个包含您想要继承的对象的模型的精简版本。然后打开目标模型,运行File -> Include Model...
。选择剥离的源模型,这样就可以了。
您可以直接使用select语句。这里,我正在创建一个从"original_schema"模式/数据库到"new_schema"模式的"original_table"表的副本:
CREATE TABLE new_schema.duplicate_table AS
Select * from original_schema.original_table;
你可以输入任何你需要的select语句,添加一个条件并选择列:
CREATE TABLE new_schema.duplicate_table AS
SELECT column1, column2
FROM original_schema.original_table
WHERE column2 < 11000000;
我认为值得一提的是
- 复制的表可以引用原模式表中不存在的字段,这些字段在要复制的模式中不存在。在将表添加到其他模式之前,检查表是否存在这些差异可能是一个好主意。 这可能是一个好主意,检查引擎兼容性(例如InnoDB vs MyISAM)和字符集。
如果您已经创建了表,只是想复制数据,我建议使用"导出数据向导"one_answers"导入数据向导"。它基本上是在程序中选择导出的东西,然后导入数据,很容易使用。
MySQL在这里有一篇关于向导的文章:表数据导出和导入向导
要使用向导复制数据,请执行以下操作:
- 在列表中找到要从中复制数据的表。
- 右键选择"表数据导出向导"。
- 选择要复制的列。
-
选择*.csv或*.csv文件的保存位置。
-
查找要插入复制数据的表
- 右键选择"表格数据导入向导"
- 选择刚刚导出的文件。
- 将复制表中的列映射到要插入的表。
- 按"完成"。按您选择的方式插入数据。
第一步:右键单击表格>复制到剪贴板>创建语句
步骤2:将剪贴板粘贴到工作台的查询字段中。
步骤3:从表名和模型(模式)名中删除(' '),后面加一个点。
eg: ' cusine_menus ' -> schema_name.cusine_menus
执行
在这篇文章中,我们将向您展示如何在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;
create table .m_property_nature like .m_property_nature
INSERT INTO .m_property_nature SELECT * from .m_property_nature;
您可以从表info中获得crate表查询,并在不同的数据库实例中使用相同的查询。
- show create table table。内容和复制查询;
- 在连接的另一个Db实例上运行生成的查询。