LoginSignup
2
2

More than 5 years have passed since last update.

SQL Server Management Studioで生成したINSERT文をC#のリテラル文字列に変換する手順

Last updated at Posted at 2015-01-17

もっと良い方法がありそうだが、とりあえず現状の手順をメモ。
Notepad++ の正規表現で整形する。

"テーブルをスクリプト化" のメニューでINSERT文を作成する。

SQLQuery1.sql
INSERT INTO [TESTDB].[dbo].[TESTTABLE_A]
           ([TESTCOLUMN_A]
           ,[TESTCOLUMN_B])
     VALUES
           (<TESTCOLUMN_A, nchar(10),>
           ,<TESTCOLUMN_B, nchar(10),>)
GO

C#で複数行のリテラル文字列を生成するには、2通りの方法がある(参考
@を利用する場合は、鍵括弧の置換まで手順を飛ばせる。
(algさんにコメント欄で教えて頂きました。ありがとうございました)

なんからの理由で、+記号で文字列を結合したい場合は、以下の置換から作業を行う。

正規表現で、行頭のスペースを削除する。最後の行のGOは不要なので削除。

検索文字列: ^\s
置換文字列: (空)

SQLQuery1.sql
INSERT INTO [TESTDB].[dbo].[TESTTABLE_A]
([TESTCOLUMN_A]
,[TESTCOLUMN_B])
VALUES
(<TESTCOLUMN_A, nchar(10),>
,<TESTCOLUMN_B, nchar(10),>)

行頭に +" を追加する

検索文字列: ^
置換文字列: +"

SQLQuery1.sql
+"INSERT INTO [TESTDB].[dbo].[TESTTABLE_A]
+"([TESTCOLUMN_A]
+",[TESTCOLUMN_B])
+"VALUES
+"(<TESTCOLUMN_A, nchar(10),>
+",<TESTCOLUMN_B, nchar(10),>)

行末に スペースと " を追加する。スペースは好みで改行文字にしてもいい。

検索文字列: $
置換文字列: "(スペースと")

SQLQuery1.sql
+"INSERT INTO [TESTDB].[dbo].[TESTTABLE_A] "
+"([TESTCOLUMN_A] "
+",[TESTCOLUMN_B]) "
+"VALUES "
+"(<TESTCOLUMN_A, nchar(10),> "
+",<TESTCOLUMN_B, nchar(10),>) "

鍵括弧を、string.Formatのフォーマット文字列のパラメータにする

検索文字列: <.*>
置換文字列: '{}'

SQLQuery1.sql
+"INSERT INTO [TESTDB].[dbo].[TESTTABLE_A] "
+"([TESTCOLUMN_A] "
+",[TESTCOLUMN_B]) "
+"VALUES "
+"('{}' "
+",'{}') "

先頭の+記号を、変数に変える。

検索文字列: +
置換文字列: const string formatString =
(1行目のみの置換)

SQLQuery1.sql
const srting formatString ="INSERT INTO [TESTDB].[dbo].[TESTTABLE_A] "
+"([TESTCOLUMN_A] "
+",[TESTCOLUMN_B]) "
+"VALUES "
+"('{}' "
+",'{}') "

Visual Studio のテキストエディタに貼りつけて、末尾に ; を付けて自動整形させる
(自分はReSharperを利用しているため、;の付与が自動整形になります)

New1.cs
            const string formatString = + "INSERT INTO [TESTDB].[dbo].[TESTTABLE_A] "
                                        + "([TESTCOLUMN_A] "
                                        + ",[TESTCOLUMN_B]) "
                                        + "VALUES "
                                        + "('{}' "
                                        + ",'{}') ";

フォーマット文字列のパラメータに手動で数字を記入

New1.cs
            const string formatString = +"INSERT INTO [TESTDB].[dbo].[TESTTABLE_A] "
                                        + "([TESTCOLUMN_A] "
                                        + ",[TESTCOLUMN_B]) "
                                        + "VALUES "
                                        + "('{0}' "
                                        + ",'{1}') ";

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2