SQL Server копирует все строки из одной таблицы в другую, т.е. дублирует таблицу - PullRequest
20 голосов
/ 22 апреля 2010

Я хочу сохранить таблицу как историю и заменить ее пустой. Как я могу сделать это через Management Studio?

Ответы [ 6 ]

31 голосов
/ 22 апреля 2010

Дублируйте свою таблицу в таблицу для архивации:

SELECT * INTO ArchiveTable FROM MyTable

Удалить все записи в вашей таблице:

DELETE * FROM MyTable
21 голосов
/ 22 апреля 2010
select * into x_history from your_table_here;
truncate table your_table_here;
19 голосов
/ 22 апреля 2010

Нет сервера SQL для тестирования, но я думаю, что это просто:

insert into newtable select * from oldtable;
8 голосов
/ 22 апреля 2010

Либо вы можете использовать RAW SQL:

INSERT INTO DEST_TABLE (Field1, Field2) 
SELECT Source_Field1, Source_Field2 
FROM SOURCE_TABLE

Или использовать мастер:

  1. Щелкните правой кнопкой мыши на базе данных -> Задачи -> Экспорт данных
  2. Выберите исходную / целевую базу данных
  3. Выберите исходную / целевую таблицу и поля
  4. Скопируйте данные

Затем выполните:

TRUNCATE TABLE SOURCE_TABLE
2 голосов
/ 22 апреля 2010

попробуйте эту единственную команду, чтобы удалить и вставить данные :

DELETE MyTable
    OUTPUT DELETED.Col1, DELETED.COl2,...
        INTO MyBackupTable

рабочий образец:

--set up the tables
DECLARE @MyTable table (col1 int, col2 varchar(5))
DECLARE @MyBackupTable table (col1 int, col2 varchar(5))
INSERT INTO @MyTable VALUES (1,'A')
INSERT INTO @MyTable VALUES (2,'B')
INSERT INTO @MyTable VALUES (3,'C')
INSERT INTO @MyTable VALUES (4,'D')

--single command that does the delete and inserts
DELETE @MyTable
    OUTPUT DELETED.Col1, DELETED.COl2
        INTO @MyBackupTable

--show both tables final values
select * from @MyTable
select * from @MyBackupTable

ВЫВОД:

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

(4 row(s) affected)
col1        col2
----------- -----

(0 row(s) affected)

col1        col2
----------- -----
1           A
2           B
3           C
4           D

(4 row(s) affected)
0 голосов
/ 02 октября 2013

Это будет работать:

select * into DestinationDatabase.dbo.[TableName1] from (
Select * from sourceDatabase.dbo.[TableName1])Temp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...