SQL Server テーブルの INSERT スクリプトを生成する 5 つの方法
SQL Server テーブルの既存の行をすべて含む INSERT スクリプトを生成する方法
このチュートリアルでは、SQL Server Management Studio (SSMS) と T-SQL を使用して、既存の SQL Server テーブルのすべての行を含む INSERT スクリプトを生成する方法を説明します。
方法
-
SSMS を開いてデータベースに接続する
SSMS を起動し、目的のデータベースサーバーに接続します。
-
テーブルを右クリックして [スクリプトの生成] を選択する
-
[詳細設定] でオプションを選択する
[スクリプトの生成] ダイアログボックスで、次のオプションを選択します。
- オブジェクトの種類: テーブル
- スクリプトの種類: INSERT
- 詳細設定:
- データ: データのみ
- スキーマ: スキーマとデータ
-
[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 を直接使用する
- 以下の 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;
- クエリ結果をテキストファイルに保存します。
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