Skip to content

suvene/DML-Breaker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

[作品名]
 DML Breaker(suVene)
 (Data Manipulation Language Breaker)

[ライセンス]
 GNU General Public License v3(GPLv3)

[バージョン]
 1.03

[動作確認済み環境]
 Max OS X(10.6.8)

[OS、配布ファイル以外に必要なソフト]
 Webブラウザ(以下のブラウザで動作確認済)
  ・Internet Exproler 6/7/8
  ・Firefox 3.5
  ・Google Chrome 4
  ・Safari 4
  ・Opera 10

[Source]
 DML Breaker - http://sourceforge.jp/projects/format-sql/
 株式会社コスモス

[DML Breaker uses the following libraries]
 Ext JS Library 3.0.3 licensed under GPLv3 License
 licensing@extjs.com
 http://www.extjs.com/license

[作品紹介]
 SQL文のうち、DML(SELECT/INSERT/UPDATE/DELETE)を解析し、
 人が見やすいDMLに変換するツールです。設計書等に転記する場合にご利用ください。
 なお、DMLの構文解析機能は実装されておりませんのでご了承ください。

[導入手順]
 ① インストールは、ダウンロードファイル(DMLBreakerX.X.zip)を任意のディレクトリに解凍することで終了します。

[基本使用手順]
 ① index.html をダブルクリックします。
 ② 上段側のテキスト入力エリアにDMLを入力します。
 ③ 画面中央の「変換」ボタンを押下します。
 ④ 下段側のテキスト入力エリアに、変換後のDMLが出力されます。
 ⑤ 変換後のDMLを選択し、他の設計書等のドキュメントに「貼り付け」を行います。

[主な特徴]
 - DML(SELECT/INSERT/UPDATE/DELETE)をサポートします。
 - 37種類のSQLキーワードの大文字変換をサポートします。
 - ローカル環境で動作が完結します。
 - クリップボードを経由した、DMLテキストの入出力に対応します(IE限定機能)
 - セミコロン「;」で、複数のDMLを区切ることにより、一括して変換することができます。
 - 実装はJavaScript+HTMLで行っています。

[DML変換エンジンの仕様]
  - SQL構文はOracle社のDatabaseに対応するDMLを基本とします。
 - 字下げ(インデント)は、4文字の半角スペースで行います。
 - 関数は大文字変換しません。
 - 列を列挙する際に利用するカンマ(,)は、行の後方に出力します。
  サブクエリも対応します。
 - WHERE句の左条件カラムにインデントを揃えます。
 - 整形仕様は次の通りです。
  <SELECT>
        SELECT構文:(副問い合わせ)
     改行キーワード:SELECT, FROM句, WHERE句, GROUP BY句, ORDER BY句, HAVING句, UNION ALL

     (変換前)
      SELECT CustomerID, CompanyName FROM Customers WHERE CustomerID = '00001' AND CustomerName LIKE '山田%' 

     (変換後)
          SELECT
              CustomerID,
              CompanyName
          FROM
              Customers
          WHERE
                  CustomerID = '00001'
              AND CustomerName LIKE '山田%'

    <INSERT>
        INSERT構文1:
     (変換前)
            INSERT INTO Customers (CustomerID, CompanyName) VALUES ('10001' , 'COSMOS')

     (変換後)
          INSERT INTO Customers (
              CustomerID,
              CompanyName
          )
          VALUES (
              '10001' ,
              'COSMOS'
          )


        INSERT構文2:
     (変換前)
            INSERT INTO OrgCustomers SELECT CustomerID, CompanyName FROM Customers WHERE CustomerID = '00001'

     (変換後)
          INSERT INTO OrgCustomers
          SELECT
              CustomerID,
              CompanyName
          FROM
             Customers
          WHERE
                  CustomerID = '00001'

    <UPDATE>
        UPDATE構文1:
     (変換前)
            UPDATE Customers SET CompanyName = 'COSMOS', RepName = '松本' WHERE CustomerID = '101000'

     (変換後)
            UPDATE Customers SET
                CompanyName = 'COSMOS',
                RepName = '松本'
            WHERE
                    CustomerID = '101000'


        UPDATE構文2:
     (変換前)
            UPDATE Customers SET CompanyName = (SELECT CompanyName FROM OrgCustomers WHERE CustomerID = '101000')

     (変換後)
            UPDATE Customers SET
                CompanyName = (
                    SELECT
                        CompanyName
                    FROM
                        OrgCustomers
                    WHERE
                            CustomerID = '101000'
                )


        UPDATE構文3:
     (変換前)
            UPDATE Customers SET (CustomerID, CompanyName) = (SELECT CustomerID , CompanyName FROM OrgCustomers WHERE CustomerID = '101000'

     (変換後)
            UPDATE Customers SET
                (CustomerID, CompanyName) = (
                    SELECT
                        CustomerID ,
                        CompanyName
                    FROM
                        OrgCustomers
                    WHERE
                            CustomerID = '101000'


    <DELETE>
        DELETE構文1:
     (変換前)
            DELETE FROM Customers WHERE CustomerID = '101000'

     (変換後)
            DELETE FROM Customers
            WHERE
                    CustomerID = '101000'

        DELETE構文2:
     (変換前)
            DELETE FROM Customers WHERE CompanyName = (SELECT CompanyName FROM OrgCustomers WHERE CustomerID = '101000')

     (変換後)
            DELETE FROM Customers
            WHERE
                    CompanyName = (
                    SELECT
                        CompanyName
                    FROM
                        OrgCustomers
                    WHERE
                            CustomerID = '101000'
                )



 - 大文字変換キーワード37種は以下の通りです。
    ALL,AND,ANY,AS,ASC,BETWEEN,CROSS,DELETE,DESC,DISTINCT,EXISTS,FROM,FULL,GROUP BY,HAVING,IN,INNER
    INSERT INTO,IS,JOIN,LEFT,LIKE,NOT,ON,OR,ORDER BY,OUTER,RIGHT,SELECT,SET,SOME,UNION,UNION ALL
    UPDATE,USING,VALUES,WHERE

[改訂履歴 DML Breaker]
2009.08.15 v0.10 初期バージョン公開
2009.10.31 v1.00 バージョン1公開
2009.11.24 v1.01 IE以外のブラウザで余分な行が出力される問題に対応
2009.12.20 v2.00 バージョン2公開
2009.12.28 v2.01 一括整形機能によるRich Textの表示改善など

[改訂履歴 DML Breaker(suVene)]
2013.02.10 v1.0.0 bugfix
2013.02.10 v1.0.1 インデント修正
2014.02.10 v1.0.2 インデント修正
2014.02.10 v1.0.3 インデント修正