簡単操作でテーブル構造を複製: CREATE TABLE ... LIKE 構文
SQL Server で既存のテーブルからテーブル構造(スキーマ)を作成する方法
CREATE TABLE ... LIKE 構文を使用する
最も簡単で便利な方法は、CREATE TABLE ... LIKE
構文を使用する方法です。この構文は、既存のテーブルのスキーマをそのまま新しいテーブルに複製します。構文は以下の通りです。
CREATE TABLE new_table_name LIKE existing_table_name;
例:
既存のテーブル customers
のスキーマを new_customers
という新しいテーブルに複製する場合、以下のクエリを実行します。
CREATE TABLE new_customers LIKE customers;
sp_duplicate_table
プロシージャを使用する方法もあります。この方法は、CREATE TABLE ... LIKE
構文よりも詳細な制御が可能です。構文は以下の通りです。
EXEC sp_duplicate_table @source_table_name = N'existing_table_name',
@destination_table_name = N'new_table_name',
@options = N'schema only';
オプション:
@options
パラメータを使用して、複製するオブジェクトの種類を指定できます。デフォルトはschema only
で、テーブルのスキーマのみを複製します。他のオプションには、データ、制約、トリガー、インデックスなどがあります。
EXEC sp_duplicate_table @source_table_name = N'customers',
@destination_table_name = N'new_customers',
@options = N'data, schema, constraints, triggers, indexes';
補足:
- いずれの方法を使用する場合も、新しいテーブルを作成する前に、十分な権限を持っていることを確認してください。
CREATE TABLE ... LIKE
構文を使用する場合は、既存のテーブルに後で変更を加えた場合、新しいテーブルに自動的に反映されないことに注意してください。- 詳細については、SQL Server のドキュメントを参照してください。
-- 既存のテーブル `customers` のスキーマを `new_customers` という新しいテーブルに複製する
CREATE TABLE new_customers LIKE customers;
sp_duplicate_table プロシージャを使用する
-- 既存のテーブル `customers` のスキーマとデータを `new_customers` という新しいテーブルに複製する
EXEC sp_duplicate_table @source_table_name = N'customers',
@destination_table_name = N'new_customers',
@options = N'data, schema, constraints, triggers, indexes';
説明:
- 上記のコードは、
AdventureWorks2019
というデータベースのSales
スキーマにあるCustomers
というテーブルを複製するものです。 new_customers
という名前の新しいテーブルが作成されます。sp_duplicate_table
プロシージャを使用する場合は、@options
パラメータを使用して、複製するオブジェクトの種類を指定できます。
注:
- このコードを実行するには、SQL Server に接続し、
AdventureWorks2019
データベースにアクセスできる権限を持っている必要があります。 - 既存のテーブルの名前やスキーマを変更する場合は、コードをそれに合わせて変更する必要があります。
SQL Server で既存のテーブルからテーブル構造(スキーマ)を作成するその他の方法
システムビューを使用して、既存のテーブルのスキーマに関する情報を取得し、その情報を使用して新しいテーブルを作成するスクリプトを生成できます。この方法は、複雑なテーブルや、CREATE TABLE ... LIKE
構文または sp_duplicate_table
プロシージャでは簡単に複製できないテーブルに適しています。
既存のテーブル customers
のスキーマに関する情報を取得するには、以下のクエリを実行します。
SELECT
*
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'customers';
このクエリは、customers
テーブルの各列に関する情報を含む結果セットを返します。この情報を使用して、新しいテーブルを作成するスクリプトを生成できます。
サードパーティ製のツールを使用する
既存のテーブルからテーブル構造を簡単に作成できるサードパーティ製のツールがいくつかあります。これらのツールは、GUI を提供している場合もあり、コーディングの知識がなくても使用できます。
手動でスクリプトを作成する
既存のテーブルのスキーマを理解している場合は、手動でスクリプトを作成して新しいテーブルを作成することもできます。この方法は、柔軟性と制御性に優れていますが、時間がかかり、エラーが発生しやすいという欠点もあります。
既存のテーブル customers
のスキーマを新しいテーブル new_customers
に手動で作成するスクリプトの例を以下に示します。
CREATE TABLE new_customers (
customer_id INT PRIMARY KEY,
first_name NVARCHAR(50),
last_name NVARCHAR(50),
email NVARCHAR(100),
phone_number NVARCHAR(20),
address NVARCHAR(255),
city NVARCHAR(50),
state NVARCHAR(2),
postal_code NVARCHAR(10),
country NVARCHAR(50)
);
- このスクリプトは、
customers
テーブルのすべての列をnew_customers
テーブルに含むように単純化されています。実際のシナリオでは、必要な列のみを含めるようにスクリプトを編集する必要があります。 - スクリプトを実行する前に、構文エラーがないことを確認してください。
SQL Server で既存のテーブルからテーブル構造(スキーマ)を作成するには、さまざまな方法があります。最良の方法は、特定のニーズとスキルレベルによって異なります。
ヒント:
- 複雑なテーブルや、多くのデータを含むテーブルを複製する場合は、
sp_duplicate_table
プロシージャを使用することをお勧めします。 - テーブルのスキーマを頻繁に変更する場合は、サードパーティ製のツールを使用すると便利です。
- 時間をかけてでも確実に作業したい場合は、手動でスクリプトを作成することをお勧めします。
sql-server