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

Oracle SQL*Plusを使用してCSVファイルに書き込む方法

    [SQL Plus](https://docs.oracle.com/cd/B19306_01/server.102/b14357/qstart.htm)は、最新のOracleインストールすべてにインストールされるインタラクティブなツールです。 SQL さらに、Oracleの通常の範囲を超えたバッチ、スクリプト、および計算を使用して、標準のデータベースクエリを超えることができます。

    以下で説明するように、.csvなどのテキストファイルを生成することも可能です。 、特定のデータベースクエリの出力を使用します。

    SQL*Plusの起動

    Oracleのインストールによっては、SQL*Plusアプリケーションを実行するためのさまざまなバージョンまたは「モード」の1つにアクセスできる場合があります。

    SQL*Plusコマンドライン

    SQL*Plus Command-lineを使用する場合 、sqlplusを発行するだけです シェルからのコマンド:

    $ sqlplus
    

    これにより、デフォルトに接続しようとします データベースを使用すると、自分自身を認証するための資格情報を入力するよう求められます。

    別のdatabaseに接続する必要がある場合 または別のuserを使用します (schema )、必要に応じて独自の値を置き換えて、次のことを試してください。

    $ sqlplus schema@//machine.domain:port/database
    

    iSQL * Plus

    アクセスできる場合は、iSQL*Plusを使用することをお勧めします 、これはSQL*Plusコマンドラインツールのブラウザベースのバージョンです。

    これは、iSQL*Plus URLにアクセスするだけで実行できます。 データベースとインストール用。正確なURLはさまざまですが、通常は次の形式です:http://machine_name.domain:port/isqlplus

    SQL * Plus for Windows

    Windowsを使用している場合は、SQL *PlusのWindowsGUIバージョンもあります。これは通常、スタートメニューから起動できます。Start > Programs > Oracle > Application Development > SQL Plus

    ファイルへのクエリの出力

    SQL * Plusに接続したので、ファイルの作成を開始できます。

    SQL*Plus構成の変更

    最初のステップは、SETを使用してSQL*PLusシステム設定を構成することです。 ステートメント。

    この例では、クエリとファイルを生成する前に、これらの設定を1回手動で変更しますが、必要に応じて、User Profileでさまざまな設定のデフォルトを変更できます。 、login.sqlにあります ファイル。

    set colsep ,
    set headsep off
    set pagesize 0
    set trimspool on
    

    通常は変更したくない最初のいくつかの設定ですが、それぞれが何を達成するかを簡単に説明します。

    • colsep 列を分割するために使用される区切り文字です。 .csvの場合 ファイル、これは単純なコンマです。
    • headsep ヘッダー行の区切り文字です(必要な場合)。この例では、ヘッダー行を出力していないため、このoffのままにします。 。
    • pagesize 「1ページあたり」の行数です。これは少し古風な設定で、1ページあたりの行数が多すぎずに印刷することを目的としています。 0の値 、ファイルに出力しているため、ページは使用しません。 headerを表示することを選択した場合 行、pagesizeを設定します 非常に大きな数(クエリで予想されるレコード結果の数よりも大きい)になるため、ヘッダー行は「ページごと」に1回ではなく、1回だけ表示されます。
    • trimspool onに設定 末尾の空白を削除するだけです。

    次に、クエリに応じて最後の2つの設定を変更する必要があります。

    set linesize #
    set numwidth #
    
    • linesizeの場合 、# 値は、結果のクエリの出力列の総数である必要があります。
    • numwidth 数値を出力するときに使用される列幅(文字スペースの数)です。
    スプールコマンド

    注:SPOOL コマンドは使用できません ブラウザベースのSQL*Plusバージョンでは、iSQL*Plus 。 iSQL * Plusの使用中にファイルを生成するには、ファイルに直接出力するように必要な設定を変更します。

    設定が完了したら、SQL*Plusにファイルを出力するように指示する必要があります。これは、SPOOLを使用して実行されます ステートメント。

    SPOOL アクティブ 、SQL * PLusは、クエリの出力を指定されたファイルに保存します。

    したがって、次に入力するコマンドはspoolです。 :

    spool file_path
    

    少し先にスキップ、 クエリが挿入されたら、spoolも停止する必要があります したがって、ファイル出力はspool offを使用して閉じられます コマンド:

    spool off
    
    クエリを挿入

    設定を変更してspoolした後の最後のステップ 実行中はクエリを挿入することです。簡単な例では、booksからすべての本を出力しています。 テーブル。

    SELECT
      title,
      primary_author
    FROM
      books;
    

    クエリステートメントを閉じるためのセミコロンを忘れないでください。次に、前述のspool offを入力してください。 コマンド。

    これで、SQL*Plusを使用したクエリの結果を含む新しいテキストファイルが生成されました。

    ヒント:スクリプトファイルの使用

    すべての行を手動で入力するのではなく、SQL*Plusで1つのコマンドで実行できる新しいスクリプトファイルにすべての設定を入力することをお勧めします。

    EDITを使用して新しいスクリプトファイルを作成します ステートメント:

    EDIT file_name
    

    次に、スクリプトコマンドリスト全体を新しいファイルに貼り付けて保存します。サンプルスクリプトの全内容は以下にあります。

    set colsep ,
    set headsep off
    set pagesize 0
    set trimspool on
    set linesize 2
    set numwidth 5
    
    spool books.csv
    
    SELECT
      title,
      primary_author
    FROM
      books;
    
    spool off
    

    スクリプトを実行するには、@を使用するだけです。 記号の後にファイル名が続く:

    @file_name
    

    スクリプトを実行し、.csvを実行する必要があります 期待どおりに作成されたファイル。


    1. ディスクI/Oのボトルネックのトラブルシューティング

    2. Oracle 11g(クライアント)をアンインストール/完全に削除する方法は?

    3. MySQLとは何ですか?

    4. SQLite Count()をGROUP BYと組み合わせて、結果セットに「カウント」列を追加します