Microsoft SQL Server
テーブルの周りのデータの移動とコピー
サーチ…
あるテーブルから別のテーブルにデータをコピーする
このコードは、テーブルからデータを選択し、クエリツール(通常はSSMS)に表示します。
SELECT Column1, Column2, Column3 FROM MySourceTable;
このコードは、そのデータをテーブルに挿入します。
INSERT INTO MyTargetTable (Column1, Column2, Column3)
SELECT Column1, Column2, Column3 FROM MySourceTable;
データをテーブルにコピーし、そのテーブルをオンザフライで作成する
このコードは、テーブルからデータを選択します。
SELECT Column1, Column2, Column3 FROM MySourceTable;
このコードは、 MyNewTable
という新しいテーブルを作成し、そのテーブルにそのデータを格納します。
SELECT Column1, Column2, Column3
INTO MyNewTable
FROM MySourceTable;
データをテーブルに移動する(ユニークキー方式を想定)
データを移動するには、最初にターゲットに挿入してから、ソース表から挿入したものを削除します。これは通常のSQL操作ではありませんが、啓蒙されている可能性があります
あなたは何を挿入しましたか?通常、データベースでは、行を一意に識別するために使用できる1つ以上の列を持つ必要があります。そこで、その行を想定して使用します。
この文は、いくつかの行を選択します
SELECT Key1, Key2, Column3, Column4 FROM MyTable;
最初に、これらをターゲットテーブルに挿入します。
INSERT INTO TargetTable (Key1, Key2, Column3, Column4)
SELECT Key1, Key2, Column3, Column4 FROM MyTable;
現在、両方のテーブルのレコードが Key1
、 Key2
上で一意であると仮定すると、それを使用してソーステーブルからデータを検索して削除できます
DELETE MyTable
WHERE EXISTS (
SELECT * FROM TargetTable
WHERE TargetTable.Key1 = SourceTable.Key1
AND TargetTable.Key2 = SourceTable.Key2
);
これは、 Key1
、 Key2
が両方のテーブルで一意の場合にのみ正しく動作します
最後に、私たちは仕事を半分にしたくありません。これをトランザクションでラップすると、すべてのデータが移動されるか、何も起こりません。これにより、データを挿入しないで、ソースからデータを削除できないことがわかります。
BEGIN TRAN;
INSERT INTO TargetTable (Key1, Key2, Column3, Column4)
SELECT Key1, Key2, Column3, Column4 FROM MyTable;
DELETE MyTable
WHERE EXISTS (
SELECT * FROM TargetTable
WHERE TargetTable.Key1 = SourceTable.Key1
AND TargetTable.Key2 = SourceTable.Key2
);
COMMIT TRAN;
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow