SSMS用のテーブルの中身をINSERTし直すSQL文の自動作成ツールを作りました

Network
スポンサーリンク

はじめに

こんにちは、なたでです。

Microsoft SQL Server Management Studio(SSMS)用のテーブルの中身をバックアップ目的で取得するSQLを作ってくれるツールを作りました。

ツールの紹介

SSMSで接続先のDBからテーブルのデータをバックアップしたいというニッチ?な目的のツールを作ってみました。

らくらくSQLクラフタ
SQL文を自動生成する専用サイトです。外部通信無しはしません。

使い方

次のようなテーブルがあったとします。

列名 データ型 NULLを許容
MY_ID bigint Unchecked
MY_NVARCHAR nvarchar(50) Checked
MY_CHAR char(10) Checked
  • レコード
MY_ID MY_NVARCHAR MY_CHAR
1 1 NULL
2 NULL AAA

このときテーブルで「右クリック→デザイン(G)」を選択、「Ctrl+A」と「Ctrl+C」を押して全てコピーするとクリップボードに以下のようなデータが入ります。

MY_ID bigint Unchecked
MY_NVARCHAR nvarchar(50) Checked
MY_CHAR char(10) Checked

これを「SSMS 用テーブルからINSERT作成」の入力欄に張り付けてみると、次のようなSQL文が出力されます。

SELECT
'INSERT INTO TARGET_TABLE (MY_ID, MY_NVARCHAR, MY_CHAR) VALUES ('
+ ISNULL(CAST(MY_ID AS VARCHAR), 'NULL') + ', '
+ CASE WHEN MY_NVARCHAR IS NULL THEN 'NULL' ELSE 'N''' + MY_NVARCHAR + '''' END + ', '
+ CASE WHEN MY_CHAR IS NULL THEN 'NULL' ELSE '''' + MY_CHAR + '''' END + ');'
FROM TARGET_TABLE;

TARGET_TABLE」となっている部分を修正してSQL文を実行すると以下のINSERTするSQL文が出力されます。

INSERT INTO TARGET_TABLE (MY_ID, MY_NVARCHAR, MY_CHAR) VALUES (1, N'1', NULL);
INSERT INTO TARGET_TABLE (MY_ID, MY_NVARCHAR, MY_CHAR) VALUES (2, NULL, 'AAA ');

再度上記に対して「TARGET_TABLE」となっている部分を修正すれば、テーブルのレコードを削除しても、上のINSERT ​データを流し込めば元のレコードに戻せるというものになります。

めちゃくちゃニッチですが、内部のデータを簡易的にバックアップしたいときとかに使えるかと思います。最後まで読んでいただき有難うございました。

コメント

タイトルとURLをコピーしました