T-SQL插入表中而不必指定每一列

Eri*_*ric 23 sql t-sql ssms sql-server-2008

在我们的数据库中,有一个表有80多个列.它有一个主键,并打开标识插入.我正在寻找一种方法来插入此表中的每一列除了来自不同数据库中相同表的主键列之外.

这可能吗?

kd7*_*kd7 52

你可以很容易地做到这一点:

-- Select everything into temp table
Select * Into 
    #tmpBigTable
    From [YourBigTable]

-- Drop the Primary Key Column from the temp table  
Alter Table #tmpBigTable Drop Column [PrimaryKeyColumn]

-- Insert that into your other big table
Insert Into [YourOtherBigTable]
    Select * From #tmpBigTable

-- Drop the temp table you created
Drop Table #tmpBigTable
Run Code Online (Sandbox Code Playgroud)

如果您在"YourOtherBigTable"中有Identity Insert On并且列完全相同,那么您将没问题.

  • 我不知道OP想要用于生产的东西,最初说他只想复制.在他想要使用它的地方没有具体细节,而只是想知道是否可以使用它.有点具有讽刺意味的是,我为提供解决*原始问题的问题而受到抨击,但是嘿,不管你的船是什么? - 提醒:问题是"它是否可能",我喜欢关于桌子有多大的假设,人为的用法是给我一些投票,而不是回答这个问题.无论如何.. (29认同)
  • SELECT*是一个反模式.这为服务器创建了比使用列正确编写插入更多的工作.这是一个非常糟糕的解决方案.您正在制作一个性能混乱,以节省从对象tbrowser拖动列的十秒钟.对于专业人士来说,这是一种不可接受的做法. (3认同)
  • 我选择了这个答案,因为他回答了我的问题.这不是最好的解决方案,上述几点都是有效的. (3认同)