MySQL批量INSERT SELECT实现流程

1. 创建目标表

首先需要创建目标表,即要将数据插入到的表。

CREATE TABLE target_table (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  age INT
);

2. 创建源表

然后需要创建源表,即从该表中选择数据进行插入。

CREATE TABLE source_table (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  age INT
);

3. 插入数据

接下来使用INSERT INTO SELECT语句将源表的数据插入到目标表中。

INSERT INTO target_table (id, name, age)
SELECT id, name, age
FROM source_table;

4. 批量插入数据

如果源表中的数据量很大,可以将插入操作拆分为多个小批次,以提高性能和避免超时。

首先需要确定每个批次的大小,然后使用LIMIT和OFFSET子句来选择源表中的数据。

-- 第一批插入
INSERT INTO target_table (id, name, age)
SELECT id, name, age
FROM source_table
LIMIT 1000;

-- 第二批插入
INSERT INTO target_table (id, name, age)
SELECT id, name, age
FROM source_table
LIMIT 1000 OFFSET 1000;

-- 以此类推...

5. 完整代码示例

以下是完整的代码示例,包括创建目标表、源表和插入数据的步骤。

-- 创建目标表
CREATE TABLE target_table (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  age INT
);

-- 创建源表
CREATE TABLE source_table (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  age INT
);

-- 插入数据
INSERT INTO target_table (id, name, age)
SELECT id, name, age
FROM source_table;

-- 批量插入数据
INSERT INTO target_table (id, name, age)
SELECT id, name, age
FROM source_table
LIMIT 1000;

INSERT INTO target_table (id, name, age)
SELECT id, name, age
FROM source_table
LIMIT 1000 OFFSET 1000;

-- 以此类推...

以上是实现MySQL批量INSERT SELECT的基本流程和代码示例。通过创建目标表和源表,然后使用INSERT INTO SELECT语句将数据从源表插入到目标表中,可以实现批量插入数据的功能。如果源表中的数据量很大,可以将插入操作拆分为多个小批次,以提高性能和避免超时。