Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 sql将特定列从一个表复制到另一个表_Sql Server_Database - Fatal编程技术网

Sql server sql将特定列从一个表复制到另一个表

Sql server sql将特定列从一个表复制到另一个表,sql-server,database,Sql Server,Database,在sql server中,我在DevDB中有一个代码表。它有10列。有一个外键列作为ParentCodeID,int列 我需要将不包括int列的5列复制到TestDB。但我需要将“33”作为ParentcodeID包含在此列中 大约有250多条记录。我需要自动完成这项工作。 请帮忙 试试这个 INSERT INTO TestDB.dbo.Codes(Col1,Col2,Col3,....) SELECT 33,col1,col2.... FROM DevDB.dbo.tblCode where

在sql server中,我在
DevDB
中有一个代码表。它有10列。有一个外键列作为
ParentCodeID
,int列

我需要将不包括int列的5列复制到
TestDB
。但我需要将“33”作为
ParentcodeID
包含在此列中

大约有250多条记录。我需要自动完成这项工作。 请帮忙

试试这个

INSERT INTO TestDB.dbo.Codes(Col1,Col2,Col3,....)
SELECT 33,col1,col2.... FROM DevDB.dbo.tblCode where ParentCodeID = xx

您甚至可以自动生成脚本,以避免在将来添加新列时进行更正。代码如下:

declare @tblName varchar(100),@FieldList varchar(max),@FieldListReplaced varchar(max),@sql varchar(max),@Field varchar(100),@ReplacedField varchar(100),@ReplaceWithValue varchar(100)

set @tblName='Codes'
set @ReplacedField='ParentcodeID'
set @ReplaceWithValue='33'
set @FieldList=','

declare cur_fieldlist cursor for 
select [Name] from sys.all_columns 
where object_id=(Select id from sysobjects where name=@tblName) and 
      is_computed=0 and (is_identity=0) 
order by column_id
open cur_fieldlist
fetch next from cur_fieldlist into @Field
while @@fetch_status = 0
begin
 set @FieldList=@FieldList+@Field+','
 fetch next from cur_fieldlist into @Field
end
close cur_fieldlist
deallocate cur_fieldlist

set @FieldListReplaced=replace(@FieldList,','+@ReplacedField+',',','+@ReplaceWithValue+',') /*to avoid replacement for several fields like ParentcodeID, ParentcodeID2, BigParentcodeID, BigParentcodeID2 etc. */
set @FieldList=substring(@FieldList,2,(len(@FieldList)-2))
set @FieldListReplaced=substring(@FieldListReplaced,2,(len(@FieldListReplaced)-2))

set @sql='INSERT INTO TestDB.dbo.'+@tblName+' ('+@FieldList+')
SELECT '+@FieldListReplaced+' FROM DevDB.dbo.'+@tblName+' WHERE 1=1 /* put your conditions here */'

print (@sql) --for checking

exec (@sql)

在哪种情况下,您希望将5列复制到TestDB。