从一个表里查出数据 分批insert into 另一个表里的sql语句
时间: 2023-10-17 07:23:11 浏览: 90
sqlserver中向表中插入多行数据的insert语句
假设有两个表,一个是源表(source_table),一个是目标表(target_table),并且源表中有10万条数据需要分批插入到目标表中。
可以使用以下SQL语句:
```
DECLARE @batch_size INT = 1000; -- 每批次插入的数据量
DECLARE @start_row INT = 1; -- 起始行数
DECLARE @end_row INT = @start_row + @batch_size - 1; -- 结束行数
WHILE @start_row <= 100000 -- 源表的总记录数
BEGIN
INSERT INTO target_table (column1, column2, column3)
SELECT column1, column2, column3
FROM (
SELECT column1, column2, column3, ROW_NUMBER() OVER (ORDER BY column1) AS row_num
FROM source_table
) AS sub_query
WHERE row_num BETWEEN @start_row AND @end_row;
SET @start_row = @end_row + 1;
SET @end_row = @start_row + @batch_size - 1;
END;
```
在这个SQL语句中,首先定义了每批次插入的数据量和起始行数,然后通过一个循环语句不断插入数据,直到插入完所有的数据为止。
每次插入数据时,使用了一个子查询来获取指定范围内的数据,并将其插入到目标表中。同时,需要更新起始行数和结束行数,以便下一次插入数据时使用。
阅读全文