sql >> データベース >  >> RDS >> Oracle

SQLclフォーマットオプション(Oracle)

    SQLclを使用してOracleDatabaseにクエリを実行する場合は、 SET SQLFORMATを使用できます。 結果の形式を決定するコマンド。

    インラインコメントを使用して、クエリ内から直接形式を指定することもできます。

    たとえば、次を使用して結果をCSV形式で出力できます。

    SET SQLFORMAT csv;
    SELECT * FROM regions;

    または、次のように行うことができます:

    SELECT /*csv*/ * FROM regions;

    フォーマットオプション

    次のオプションを使用して、出力形式を指定できます。

    オプション 説明
    デフォルト すべてのフォーマットをクリアし、SQL*PLUSスタイルのフォーマットに設定します。このオプションは、 SET SQLFORMATでのみ機能します コマンド。
    ansiconsole データと端末サイズに基づく高度なフォーマット。
    修正済み 固定幅。
    csv 二重引用符で囲まれた文字列を含むカンマ区切り形式( "
    ローダー パイプ( | )二重引用符で囲まれた文字列を含む区切り形式( "
    区切り オプションのセパレータ、左右のエンクロージャを使用したCSV形式。
    テキスト 結果を区切り文字なしでテキストとして出力します。このオプションは、 HELPに記載されていません オプション。
    挿入 SQL INSERTを生成します 結果からのステートメント。
    json ORDSコレクション形式と一致するJSON形式。
    json-formatted ORDSコレクション形式と一致するJSON形式できれいに印刷されています。 JSONは、より人間が読める形式で表示されます。
    xml XML形式。
    html HTML表形式。スタイリングとJavaScript検索ツールを備えたテーブルを使用してHTMLドキュメントのコードを生成します。

    以下は、上記のオプションを示す例です。

    デフォルト

    すべてのフォーマットをクリアし、SQL*PLUSスタイルのフォーマットに設定します。

    SET SQLFORMAT default;
    SELECT * FROM regions;

    結果:

    SQL Format Cleared
    
     REGION_ID REGION_NAME              
    ---------- -------------------------
             1 Europe                   
             2 Americas                 
             3 Asia                     
             4 Middle East and Africa   

    ansiconsole

    データと端末サイズに基づく高度なフォーマット。

    SET SQLFORMAT ansiconsole;
    SELECT * FROM regions;

    結果:

       REGION_ID               REGION_NAME 
    ____________ _________________________ 
               1 Europe                    
               2 Americas                  
               3 Asia                      
               4 Middle East and Africa    

    修正済み

    固定幅。

    SET SQLFORMAT fixed;
    SELECT * FROM regions;

    結果:

    "REGION_ID"                   "REGION_NAME"                 
    "1"                           "Europe"                      
    "2"                           "Americas"                    
    "3"                           "Asia"                        
    "4"                           "Middle East and Africa"

    csv

    二重引用符で囲まれた文字列を含むカンマ区切り形式( "

    SET SQLFORMAT csv;
    SELECT * FROM regions;

    結果:

    "REGION_ID","REGION_NAME"
    1,"Europe"
    2,"Americas"
    3,"Asia"
    4,"Middle East and Africa"

    ローダー

    パイプ( | )二重引用符で囲まれた文字列を含む区切り形式( "

    SET SQLFORMAT loader;
    SELECT * FROM regions;

    結果:

     1|"Europe"|
     2|"Americas"|
     3|"Asia"|
     4|"Middle East and Africa"|

    区切り

    オプションの区切り文字、左、および右のエンクロージャを含むCSV形式。これにより、独自の区切り文字を選択できます。

    SET SQLFORMAT delimited , < >;
    SELECT * FROM regions;

    結果:

    <REGION_ID>,<REGION_NAME>
    1,<Europe>
    2,<Americas>
    3,<Asia>
    4,<Middle East and Africa>

    テキスト

    結果を区切り文字なしのテキストとして出力します。このオプションは、 HELPに記載されていません オプション。

    SET SQLFORMAT text;
    SELECT * FROM regions;

    結果:

    "REGION_ID"null"REGION_NAME"
    1null"Europe"
    2null"Americas"
    3null"Asia"
    4null"Middle East and Africa"

    挿入

    SQL INSERTを生成します 結果からのステートメント。

    SET SQLFORMAT insert;
    SELECT * FROM regions;

    結果:

    REM INSERTING into REGIONS
    SET DEFINE OFF;
    Insert into REGIONS (REGION_ID,REGION_NAME) values (1,'Europe');
    Insert into REGIONS (REGION_ID,REGION_NAME) values (2,'Americas');
    Insert into REGIONS (REGION_ID,REGION_NAME) values (3,'Asia');
    Insert into REGIONS (REGION_ID,REGION_NAME) values (4,'Middle East and Africa');
    に挿入します。

    json

    ORDSコレクション形式に一致するJSON形式。

    SET SQLFORMAT json;
    SELECT * FROM regions;

    結果:

    {"results":[{"columns":[{"name":"REGION_ID","type":"NUMBER"},{"name":"REGION_NAME","type":"VARCHAR2"}],"items":
    [
    {"region_id":1,"region_name":"Europe"}
    ,{"region_id":2,"region_name":"Americas"}
    ,{"region_id":3,"region_name":"Asia"}
    ,{"region_id":4,"region_name":"Middle East and Africa"}
    ]}]}

    json-formatted

    ORDSコレクション形式と一致し、きれいに印刷されたJSON形式。 JSONは、より人間が読める形式で表示されます。

    SET SQLFORMAT json-formatted;
    SELECT * FROM regions;

    結果:

    {
      "results" : [
        {
          "columns" : [
            {
              "name" : "REGION_ID",
              "type" : "NUMBER"
            },
            {
              "name" : "REGION_NAME",
              "type" : "VARCHAR2"
            }
          ],
          "items" : [
            {
              "region_id" : 1,
              "region_name" : "Europe"
            },
            {
              "region_id" : 2,
              "region_name" : "Americas"
            },
            {
              "region_id" : 3,
              "region_name" : "Asia"
            },
            {
              "region_id" : 4,
              "region_name" : "Middle East and Africa"
            }
          ]
        }
      ]
    }

    xml

    XML形式。

    SET SQLFORMAT xml;
    SELECT * FROM regions;

    結果:

    <?xml version='1.0'  encoding='UTF-8' ?>
    <RESULTS>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[1]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Europe]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[2]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Americas]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[3]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Asia]]></COLUMN>
    	</ROW>
    	<ROW>
    		<COLUMN NAME="REGION_ID"><![CDATA[4]]></COLUMN>
    		<COLUMN NAME="REGION_NAME"><![CDATA[Middle East and Africa]]></COLUMN>
    	</ROW>
    </RESULTS>

    html

    HTMLの表形式。スタイリングとJavaScript検索ツールを備えたテーブルを使用してHTMLドキュメントのコードを生成します。

    SET SQLFORMAT html;
    SELECT * FROM regions;

    結果のHTMLコードは、HTMLドキュメントを作成し、スタイル、JavaScriptなどを追加するため、非常に大きくなります。

    .htmlに保存した場合の結果のHTMLは次のようになります。 ファイルとブラウザでのレンダリング:

    • regions.html

    生成された実際のHTMLコードは次のとおりです。

    <!DOCTYPE html>
    <html>
    
    <head>
      <meta charset='UTF-8'>
      
      <title>Result Data</title>
      
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
      
      <style>
      * { 
        margin: 0; 
        padding: 0; 
      }
      body { 
        font: 14px/1.4 Palatino, Serif; 
      }
      
      /* 
      Generic Styling, for Desktops/Laptops 
      */
      table { 
        width: 100%; 
        border-collapse: collapse; 
      }
      /* Zebra striping */
      tr:nth-of-type(odd) { 
        background: #eee; 
      }
      th { 
        background: #333; 
        color: white; 
        font-weight: bold; 
      }
      td, th { 
        padding: 6px; 
        border: 1px solid #9B9B9B; 
        text-align: left; 
      }
      @media 
      only screen and (max-width: 760px),
      (min-device-width: 768px) and (max-device-width: 1024px)  {
        table, thead, tbody, th, td, tr { display: block; }
        thead tr { position: absolute;top: -9999px;left: -9999px;}
        tr { border: 1px solid #9B9B9B; }
        td { border: none;border-bottom: 1px solid #9B9B9B; position: relative;padding-left: 50%; }
        
        td:before { position: absolute;top: 6px;left: 6px;width: 45%; padding-right: 10px; white-space: nowrap;}
        
        /*
        Label the data
        */
    td:nth-of-type(1):before { content: "REGION_ID"; }
    td:nth-of-type(2):before { content: "REGION_NAME"; }
      }
      
      /* Smartphones (portrait and landscape) ----------- */
      @media only screen
      and (min-device-width : 320px)
      and (max-device-width : 480px) {
        body { 
          padding: 0; 
          margin: 0; 
          width: 320px; }
        }
      
      /* iPads (portrait and landscape) ----------- */
      @media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {
        body { 
          width: 495px; 
        }
      }
      
      </style>
      <!--<![endif]-->
    <script type="text/javascript">
    
    function search(){
      
      var s = document.getElementById('search').value;
    
      rows = document.getElementById('data').getElementsByTagName('TR');
      for(var i=0;i<rows.length;i++){
        if ( rows[i].textContent.indexOf(s)>0  || s.length==0 ) {
    	  rows[i].style.display ='';
        } else {
          rows[i].style.display ='none';
        }
      }
    }
    
    
    var timer;
    function delayedSearch() {
    	clearTimeout(timer);
    	console.log('delay-ing')
        timer = setTimeout(function () {
    		console.log('delay-running')
    		search();
        }, 500);
      }</script>
    </head>
    
    <body>
    <div><input type="text" size="30" maxlength="1000" value="" id="search" onkeyup="delayedSearch();" /><input type="button" value="Go" onclick="lsearch();"/> </div>
    <table><thead><tr>	<th>REGION_ID</th>
    	<th>REGION_NAME</th>
    </tr></thead>
    <tbody id="data">
    
    	<tr>
    <td align="right">1</td>
    <td>Europe</td>
    	</tr>
    	<tr>
    <td align="right">2</td>
    <td>Americas</td>
    	</tr>
    	<tr>
    <td align="right">3</td>
    <td>Asia</td>
    	</tr>
    	<tr>
    <td align="right">4</td>
    <td>Middle East and Africa</td>
    	</tr>
    </tbody></table><!-- SQL:
    SELECT * FROM regions--></body></html>

    1. MySQLユーザー管理

    2. SQLiteで外部キーのリストを返す

    3. 'IN'句から順序を維持する

    4. MySQLに挿入するときにPHPで一重引用符をエスケープする