web-dev-qa-db-ja.com

SQL Serverは、すべての行をあるテーブルから別のテーブルにコピーします。つまり、重複したテーブルです。

テーブルを履歴として保持し、空のテーブルに置き換えたいと思います。 Management Studioでこれを行うにはどうすればよいですか?

21
iamjonesy

アーカイブするテーブルにテーブルを複製します。

SELECT * INTO ArchiveTable FROM MyTable

テーブル内のすべてのエントリを削除します。

DELETE * FROM MyTable
31
froadie
select * into x_history from your_table_here;
truncate table your_table_here;
21
Michael Buen

テストするためにSQLサーバーを持っていませんが、私はそれがちょうどだと思う:

insert into newtable select * from oldtable;
20
Hans Olsson

RAW SQLを使用できます:

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

または、ウィザードを使用します。

  1. データベースを右クリック->タスク->データのエクスポート
  2. ソース/ターゲットデータベースを選択します
  3. ソース/ターゲットテーブルとフィールドを選択する
  4. データをコピーする

次に実行します:

TRUNCATE TABLE SOURCE_TABLE
8
ntziolis

これを試してくださいデータの削除と挿入の両方を行う単一コマンド

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)
2
KM.