ホームページ > データベース > mysql チュートリアル > 既存のテーブルから SQL CREATE Table スクリプトを生成するにはどうすればよいですか?

既存のテーブルから SQL CREATE Table スクリプトを生成するにはどうすればよいですか?

DDD
リリース: 2025-01-14 08:55:16
オリジナル
946 人が閲覧しました

How Can I Generate SQL CREATE Table Scripts from Existing Tables?

クエリを使用して既存のテーブルを生成する SQL CREATE スクリプト

このクエリ自体は CREATE スクリプトを直接生成しませんが、SQL Server に保存されているスキーマ情報から派生させることができます。

メソッド:

  1. ターゲットテーブルを特定し、その詳細 (列、インデックス、制約) を取得します。
  2. 収集した情報に基づいて DDL スクリプトを構築します。

コード:

<code class="language-sql">DECLARE @table_name SYSNAME = 'dbo.MyTable';

DECLARE @DDL NVARCHAR(MAX) = 'CREATE TABLE ' + QUOTENAME(@table_name) + ' (';

SELECT @DDL += CHAR(13) + '    [' + c.name + '] ' + 
                CASE WHEN c.is_nullable = 1 THEN 'NULL' ELSE 'NOT NULL' END + ','
FROM sys.columns c
WHERE c.[object_id] = OBJECT_ID(@table_name);

SET @DDL = LEFT(@DDL, LEN(@DDL) - 1) + ')';

SELECT @DDL += CHAR(13) + ' CONSTRAINT [PK_' + @table_name + '] PRIMARY KEY (' + 
                STUFF((SELECT ', [' + c.name + ']' FROM sys.index_columns c
                        WHERE c.[object_id] = OBJECT_ID(@table_name) AND c.index_id = 1), 1, 2, '') + ')';

SELECT @DDL += CHAR(13) + ' WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF);';

PRINT @DDL;</code>
ログイン後にコピー

出力例:

<code class="language-sql">CREATE TABLE [dbo].[MyTable] (
    [ID] INT NOT NULL,
    [Name] VARCHAR(50) NULL,
    [Age] INT NULL,
    CONSTRAINT [PK_MyTable] PRIMARY KEY ([ID]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF);</code>
ログイン後にコピー

以上が既存のテーブルから SQL CREATE Table スクリプトを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート