SQL Server テーブルの INSERT スクリプトを生成する 5 つの方法

2024-04-02

SQL Server テーブルの既存の行をすべて含む INSERT スクリプトを生成する方法

このチュートリアルでは、SQL Server Management Studio (SSMS) と T-SQL を使用して、既存の SQL Server テーブルのすべての行を含む INSERT スクリプトを生成する方法を説明します。

方法

  1. SSMS を開いてデータベースに接続する

    SSMS を起動し、目的のデータベースサーバーに接続します。

  2. テーブルを右クリックして [スクリプトの生成] を選択する

  3. [詳細設定] でオプションを選択する

    [スクリプトの生成] ダイアログボックスで、次のオプションを選択します。

    • オブジェクトの種類: テーブル
    • スクリプトの種類: INSERT
    • 詳細設定:
      • データ: データのみ
      • スキーマ: スキーマとデータ
  4. [OK] をクリックしてスクリプトを生成する

出力

生成されたスクリプトは、次のようになります。

INSERT INTO [テーブル名] ([列名1], [列名2], ...)
VALUES
  ([値1], [値2], ...),
  ([値3], [値4], ...),
  ...;

GO

補足

  • 生成されたスクリプトは、必要に応じて編集できます。
  • スクリプトを実行する前に、バックアップを取ることを忘れないでください。
  • 大量のデータを挿入する場合は、BULK INSERT を使用することを検討してください。



USE AdventureWorks2019

-- テーブルを右クリックして [スクリプトの生成] を選択

SELECT *
FROM [Sales].[Customers]

GO

-- 生成されたスクリプト

INSERT INTO [Sales].[Customers] ([CustomerID], [FirstName], [LastName], ...)
VALUES
  (1, 'John', 'Doe', ...),
  (2, 'Jane', 'Doe', ...),
  ...;

GO
-- 生成されたスクリプト

INSERT INTO [Sales].[Customers] ([CustomerID], [FirstName], [LastName], ...)
VALUES
  (1, 'John', 'Doe', ...),
  (2, 'Jane', 'Doe', ...),
  ...;

GO
  • このサンプルコードは、AdventureWorks2019 データベースを使用しています。
  • 必要に応じて、SELECT ステートメントを変更して、特定の行のみを含む INSERT スクリプトを生成できます。



他の方法

T-SQL を直接使用する

  1. 以下の T-SQL クエリを実行します。
SELECT 'INSERT INTO [' + TABLE_NAME + '] (' + 
       STRING_AGG(QUOTENAME(COLUMN_NAME), ', ') + ') 
       VALUES (' + 
       STRING_AGG('''' + CONVERT(VARCHAR(MAX), COLUMN_VALUE) + '''', ', ') + ')'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'TABLE_NAME'
ORDER BY ORDINAL_POSITION;
  1. クエリ結果をテキストファイルに保存します。

PowerShell を使用する

以下の PowerShell スクリプトを使用して、INSERT スクリプトを生成できます。

$database = 'AdventureWorks2019'
$table = 'Sales.Customers'

$columns = Get-SqlCommand -Query "SELECT name FROM sys.columns WHERE object_id = OBJECT_ID('$table')"

$data = Get-SqlCommand -Query "SELECT * FROM $table"

$insertScript = $data | ForEach-Object {
  "INSERT INTO [$table] ($($columns.name -join ', ')) VALUES ($($_. -join ', '))"
}

$insertScript | Out-File -FilePath 'C:\Temp\insert_script.sql'

サードパーティ製のツールを使用する

SQL Server データベースの管理と移行のためのサードパーティ製ツールの中には、INSERT スクリプトを生成する機能を備えているものがあります。


sql-server ssms


MSSQL Select ステートメントでテーブルを使わずに増加整数列を取得する方法

CTE は、複雑なクエリをより小さく、読みやすい部分に分割するのに役立ちます。この場合、CTE を使用して、1 から始まる増加整数列を生成する仮想テーブルを作成できます。このクエリは、次の結果を返します:WHILE ループを使用して、1 から始まる増加整数列を生成することもできます。...


SQL Serverで2つの異なるサーバーからデータを選択する方法

SQL Serverで2つの異なるサーバーからデータを選択するには、いくつかの方法があります。それぞれ的方法には長所と短所があり、状況に応じて最適な方法を選択する必要があります。方法リンクサーバーを使用すると、別のサーバー上のデータベースにアクセスしてクエリを実行することができます。これは、最も簡単で一般的な方法の一つです。 長所 設定が簡単 他の方法と比べて高速 短所 すべてのデータベースサーバーでサポートされているわけではない セキュリティ上のリスクがある...


SQL ServerでDATEADD関数を使ってDATETIME型から時間を削除する

SQL ServerでDATETIME型から時間部分を取り除く方法はいくつかありますが、それぞれ利点と欠点があります。ここでは、最も一般的な方法3つと、それぞれの利点と欠点、そしてパフォーマンスへの影響について詳しく解説します。方法1:CONVERT関数とCHAR関数...


SQL Server JOIN で NULL 値を扱う:ベストプラクティス

欠損値 とは、データベースのカラムに値が入力されていない状態を指します。 これは、データがまだ入力されていない、入力忘れ、削除されたなど、様々な理由で発生します。JOIN 操作において、欠損値は結果に影響を与える可能性があります。 具体的には、以下の 2 つの問題が発生します。...


SQL Server 外部キー 非主キー リレーションシップ データベース

SQL Serverでは、外部キーを使用して、異なるテーブル間の関連性を定義することができます。外部キーは、子テーブルの列を、親テーブルの列に関連付けるものです。通常、外部キーは親テーブルの主キーと関連付けられますが、非主キーと関連付けることも可能です。...


SQL SQL SQL SQL Amazon で見る



SQL Server テーブルに INSERT ステートメントを自動生成する方法

利点:最も簡単な方法GUI 操作で直感的に操作できる自動的に INSERT ステートメントを生成してくれるプログラムコードとして出力できない手順:SSMS でテーブルを開きます。右クリックして "テーブル デザイナー" を選択します。"行の追加" ボタンをクリックします。