【发布时间】:2017-10-31 14:12:30
【问题描述】:
我正在使用 SQL 中的循环复制一系列表。我从SQL Server Maximum rows that can be inserted in a single insert statment 推断出,对于我的SQL SERVER,可以使用select * 插入的最大行数为10,000。但是,源表大于 10,000 行。有没有办法绕过这个限制,而无需明确说明 select 语句中的列,因为每个表的列都不同?
DECLARE @iTable TABLE (TableName VARCHAR(50),Id int identity(1,1))
INSERT INTO @iTable
Select distinct table_name From INFORMATION_SCHEMA.COLUMNS
Where table_name like 'D0%' OR table_name like 'D1%'
DECLARE @imax int
DECLARE @iSQL VARCHAR(MAX)
DECLARE @iTableName VARCHAR(max)
DECLARE @iid int = 1
select @imax = MAX(Id) from @iTable
WHILE (@iid <= @imax)
BEGIN
SELECT @iTableName = TableName FROM @iTable WHERE Id = @iid
SET @iSQL = 'select * into st_'+ @iTableName +' from '+ @iTableName +';'
EXEC(@iSQL)
SET @iid = @iid +1
END
【问题讨论】:
-
“我发现可以使用 select * 插入的最大行数为 10,000” - 是否愿意提供指向该效果的链接?这不是我听说过的限制......这根本不是真的!
-
I've discovered that the maximum rows which can be inserted using a select * is 10,000,你是怎么发现的?,你使用的是什么版本的SQL Server,因为我以前从未遇到过这种情况,我刚刚测试了从一个表插入10,000,000到另一个没有问题 -
已在上面编辑 - 未发现“推断”!当我测试代码时,表格的计数(*)为 10k 行
标签: sql-server tsql