Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 选择*into(无最大行数限制)T-SQL_Sql Server_Tsql - Fatal编程技术网

Sql server 选择*into(无最大行数限制)T-SQL

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

我正在使用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_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行