はじめに
こんにちは、なたでです。
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 データを流し込めば元のレコードに戻せるというものになります。
めちゃくちゃニッチですが、内部のデータを簡易的にバックアップしたいときとかに使えるかと思います。最後まで読んでいただき有難うございました。





コメント