第6章 応用例:HTMLやSQLを出力する

6.2 SQL文を出力する

PPDGenでは、各列のPrefix/Suffixを使って、SQL文を出力することができます。 PPDGenをインストールしたフォルダに、下記の設定例を適用したテンプレートのサンプル( sample_sql.pgt )があります。

テーブル構造

以下のサンプルは、次のようなCREATE文( sample_create.sql )で作成されるテーブルを対象としています。

CREATE TABLE USER_MASTER ( 
	ID		INTEGER,
	USER_ID		VARCHAR(64),
	PASSWORD	VARCHAR(64),
	NAME_SEI	VARCHAR(64),
	NAME_MEI	VARCHAR(64),
	NAME_SEI_KANA	VARCHAR(128),
	NAME_MEI_KANA	VARCHAR(128),
	MAIL		VARCHAR(256)
);

設定例

表6.2 SQL文を出力する設定例
全体オプション 出力ファイル名 insert.sql
区切り文字 区切りなし
1列目 Prefix INSERT INTO USER_MASTER VALUES(
Suffix ,
2〜7列目 Prefix '
Suffix ',
8列目 Prefix '
Suffix ');

出力サンプル

          
INSERT INTO USER_MASTER VALUES(10000151,'fakea54','$1$gWNLHfUY$E20PJPT9JsjqCQQ4vuxqm.','片岡','清子','かたおか','きよこ','fakea54@example.org');
INSERT INTO USER_MASTER VALUES(10000057,'h_fukui','$1$yyV9CX8M$uMHtfPO78odQAORdfgWLx.','福井','博','ふくい','ひろし','h_fukui@example.com');
INSERT INTO USER_MASTER VALUES(10000138,'seshio','$1$WrwtXjfw$Ds896U.eDKco7oBHp5U27.','佐野','順子','さの','じゅんこ','seshio@example.com');
INSERT INTO USER_MASTER VALUES(10000012,'i-daisuke76','$1$X2knXfuh$GcMd9u6JmlRsVJIJXAYAl1','今井','大輔','いまい','だいすけ','i-daisuke76@example.net');
INSERT INTO USER_MASTER VALUES(10000139,'noweang','$1$QHkviZuJ$qfrkj9uuw5E6DBurg0id01','吉田','和子','よしだ','かずこ','noweang@example.org');
INSERT INTO USER_MASTER VALUES(10000188,'maboat','$1$0NJdkJqZ$aEUiOvWvAieeSdW7moINF1','鳥居','昇','とりい','のぼる','torii_noboru@example.org');
INSERT INTO USER_MASTER VALUES(10000044,'yoko-y','$1$UOvLcOzf$8GfQZ9jZXP1eZbaMZWejU0','山本','洋子','やまもと','ようこ','yoko-y@example.com');
INSERT INTO USER_MASTER VALUES(10000040,'michiko72','$1$ayxBZ200$FJ8AIV4DiKXarys8T9Mx1/','貝原','美智子','かいばら','みちこ','michiko72@example.net');
INSERT INTO USER_MASTER VALUES(10000109,'takashi_kameda60','$1$83AO91LB$KXCLBsXWQUAGKtffHQlw20','亀田','隆','かめだ','たかし','takashi_kameda60@example.com');
INSERT INTO USER_MASTER VALUES(10000082,'asuka83','$1$yh2juEra$w70D9m7HbvNH74t5Z/mp30','上條','明日香','かみじょう','あすか','asuka83@example.net');

SQL出力時の注意

PPDGenでは、以下の場合に、データとしてシングルクオート( ' )を出力します。

  1. 姓名列で、表記形式:英字(訓令式)とした場合
  2. クレジットカード列で、カード名義人の表記形式:英字(訓令式)とした場合

これは、訓令式ローマ字で、「ん」の後に母音が続く場合にアポストロフィーを付加する、 というルールに基づくもので、必ず「 n' 」の形で現れます。 必要に応じて、DBMSごとのSQLエスケープルールに則ってエスケープを行ってください。

なお、表記形式:英字(ヘボン式)とした場合(ヘボン式ローマ字)には、シングルクオートを出力することはありません。

また、PPDGenでは、バックスラッシュ( \ )を出力することはありません(Prefix/Suffixに設定した場合や、任意の文字列、CSVファイルのインポートで入力された場合を除く)。