Sql server 选择*into(无最大行数限制)T-SQL
我正在使用SQL中的循环复制一系列表。我推断,对于我的SQL SERVER,使用select*可以插入的最大行数是10000。但是,源表大于10000行。有没有一种方法可以绕过此限制而不在select语句中显式声明列,因为每个表的列都不同Sql server 选择*into(无最大行数限制)T-SQL,sql-server,tsql,Sql Server,Tsql,我正在使用SQL中的循环复制一系列表。我推断,对于我的SQL SERVER,使用select*可以插入的最大行数是10000。但是,源表大于10000行。有没有一种方法可以绕过此限制而不在select语句中显式声明列,因为每个表的列都不同 DECLARE @iTable TABLE (TableName VARCHAR(50),Id int identity(1,1)) INSERT INTO @iTable Select distinct table_name From INFORMATION
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 into时对行数没有限制。但是,您当然可以简化代码并消除该循环
DECLARE @iSQL NVARCHAR(MAX) = ''
SELECT @iSQL = @iSQL + 'select * into st_'+ TABLE_NAME +' from '+ TABLE_NAME +';'
from INFORMATION_SCHEMA.COLUMNS
Where TABLE_NAME like 'D0%'
OR TABLE_NAME like 'D1%'
group by TABLE_NAME
select @iSQL
--uncomment below when you are satisfied the dynamic sql is correct.
--exec sp_executesql @iSQL
我发现,使用select*可以插入的最大行数为10000行-是否提供指向该效果的链接?这不是我听说过的限制……这根本不是真的!我发现,使用select*可以插入的最大行数是10000,您是如何发现的?您使用的是什么版本的SQL Server,因为我以前从未遇到过这种情况,我刚刚测试过将10000000行从一个表插入到另一个表,上面没有ISSUEEDITE-“推断”未发现!当我测试代码时,表的计数*为10k行