MYSQL把一张表的数据批量复制到另外一张表

1. 表结构完全一样
insert into 表1
select * from 表2
2. 表结构不一样(这种情况下得指定列名)
insert into 表1 (列名1,列名2,列名3)

select 列1,列2,列3 from 表2

3.不同数据库,需要在表前面加数据库前缀,database.表名。

注意:以上测试过OK,sql语句不需要在insert后面加values。

### MySQL 中实现跨数据快速插入的方法 在 MySQL 中,可以通过 `INSERT ... SELECT` 的方式来实现在不同之间的数据快速插入操作。这种方式允许一次性将源中的数据通过查询条件筛选后直接插入目标中。 以下是具体的操作说明: #### 使用 INSERT ... SELECT 实现跨数据插入 语法结构如下所示: ```sql INSERT INTO target_table_name (column1, column2, ...) SELECT source_column1, source_column2, ... FROM source_table_name WHERE conditions; ``` 其中: - **target_table_name** 是要插入的目标名称。 - **source_table_name** 是作为数据来源的原始名称。 - 列名列应匹配两者的字段定义以及顺序关系[^2]。 如果希望忽略重复记录,则可以在 `INSERT` 关键字后面加上 `IGNORE` 关键词,这样当遇到唯一索引冲突时不会中断整个事务处理过程[^3]。 #### 创建示例格用于演示 为了更清楚地展示这一功能的实际应用情况,我们先构建两个简单的测试用——员工信息 (`employee`) 和其副本 (`copyEmployee`) ,它们具有相同的列结构[^5]: ```sql -- 原始 CREATE TABLE employee ( id VARCHAR(18), name VARCHAR(18), email VARCHAR(100), gender VARCHAR(10) ); -- 复制 CREATE TABLE copyEmployee ( id VARCHAR(18), name VARCHAR(18), email VARCHAR(100), gender VARCHAR(10) ); ``` 接着向原填充一些初始数据以便后续验证效果: ```sql INSERT INTO employee VALUES ('E001', 'Alice', 'alice@example.com', 'Female'); INSERT INTO employee VALUES ('E002', 'Bob', 'bob@example.com', 'Male'); ``` #### 执行实际的数据迁移命令 假设我们现在想要把所有男性雇员的信息迁移到新的备份里去,那么可以执行这样的 SQL 语句: ```sql INSERT INTO copyEmployee (id, name, email, gender) SELECT id, name, email, gender FROM employee WHERE gender='Male'; ``` 这条指令会读取满足性别为男性的那些行,并将其写入到指定的目的地中[^4]。 #### 注意事项 - 确认目标已经存在并且拥有足够的空间存储新增加的内容; - 如果涉及到大量数据传输的话,考虑设置合适的锁机制或者采用批量提交的方式来提高效率减少锁定时间; - 对于含有自增主键的情况,在设计阶段就要特别留意是否需要手动调整起始值等问题; ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值