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