select * into
別のテーブルからテーブルを作成するために使用しておりSET IDENTITY_INSERT ON
、新しく作成されたテーブルに ID 列を含むデータを受け入れるために使用しています。
ここで私の質問は、テーブル B の ID プロパティをテーブル A にコピーせずに、別の既存のテーブル (テーブル B など) からテーブル (テーブル A など) を作成する方法はありますか?
select * into
別のテーブルからテーブルを作成するために使用しておりSET IDENTITY_INSERT ON
、新しく作成されたテーブルに ID 列を含むデータを受け入れるために使用しています。
ここで私の質問は、テーブル B の ID プロパティをテーブル A にコピーせずに、別の既存のテーブル (テーブル B など) からテーブル (テーブル A など) を作成する方法はありますか?
もちろん、次のTABLEA
ように見えるとしましょう。
CREATE TABLE TABLEA (
ID INT PRIMARY KEY IDENTITY(1, 1),
Column1 VARCHAR(50)
)
TABLEB
同じように見えるとしましょう。TABLEB
ID 列を移動せずにから にデータを移動する場合はTABLEA
、次のステートメントを記述します。
INSERT INTO TABLEA (Column1)
SELECT Column1 FROM TABLEB
これにより、すべての新しい行がTABLEA
独自の ID 値を取得します。
ただし、列SELECT * FROM TABLEB
も選択されるため、 a を発行できないことに注意してください。ID
個別に必要なすべてのフィールドをリストする必要があります。しかし、一般的に言えば、非常に経験豊富な DBA やプログラマーの多くはSELECT * FROM Table
、スキーマが変更されるとすべてが壊れてしまうため、非常に危険だと言うと思います。あなたは本当に常に具体的になりたいと思っています。
SELECT STUFF((SELECT ', ' + c.name FROM sys.columns c where c.object_id = OBJECT_ID('dbo.TABLE_NAME') and c.is_identity <> 1 FOR XML PATH('')),1, 2, '') AS CSVColumn
これにより、各テーブルの列のコンマ区切りリストが得られます。これらのステートメントをメモ帳にコピーして、実行できるスクリプトを作成します。