SQL Server将所有行从一个表复制到另一个表即重复表

iam*_*esy 22 sql ssms sql-server-2008

我想保留一张表作为历史记录,并将其替换为空表.我如何通过Management Studio完成此操作?

fro*_*die 33

将表复制到要存档的表中:

SELECT * INTO ArchiveTable FROM MyTable
Run Code Online (Sandbox Code Playgroud)

删除表格中的所有条目:

DELETE * FROM MyTable
Run Code Online (Sandbox Code Playgroud)

  • 这仅适用于尚未创建ArchiveTable的情况,否则您将收到错误"数据库中已存在名为'ArchiveTable'的对象.". (4认同)
  • TRUNCATE 是比 DELETE 更好的选择。 (2认同)

Han*_*son 21

没有sql server可以测试,但我认为它只是:

insert into newtable select * from oldtable;
Run Code Online (Sandbox Code Playgroud)

  • @Robin - 我同意 * 是一个不错的选择,**IF** 字段的顺序是相同的 ;) (3认同)
  • 如果在这样的查询中有任何应该使用"SELECT*"的地方......它会复制表格,而不必知道其中的内容. (2认同)

Mic*_*uen 21

select * into x_history from your_table_here;
truncate table your_table_here;
Run Code Online (Sandbox Code Playgroud)

  • +1,这比选定的答案要好. (6认同)

ntz*_*lis 9

您可以使用RAW SQL:

INSERT INTO DEST_TABLE (Field1, Field2) 
SELECT Source_Field1, Source_Field2 
FROM SOURCE_TABLE
Run Code Online (Sandbox Code Playgroud)

或者使用向导:

  1. 右键单击数据库 - >任务 - >导出数据
  2. 选择源/目标数据库
  3. 选择源/目标表和字段
  4. 复制数据

然后执行:

TRUNCATE TABLE SOURCE_TABLE
Run Code Online (Sandbox Code Playgroud)