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

SQLPLUSを使用してCSV形式のファイルにスプールするにはどうすればよいですか?

    フィールド間にスペースを導入しますが、以下を使用することもできます。

    set colsep ,     -- separate columns with a comma
    set pagesize 0   -- No header rows
    set trimspool on -- remove trailing blanks
    set headsep off  -- this may or may not be useful...depends on your headings.
    set linesize X   -- X should be the sum of the column widths
    set numw X       -- X should be the length you want for numbers (avoid scientific notation on IDs)
    
    spool myfile.csv
    
    select table_name, tablespace_name 
      from all_tables
     where owner = 'SYS'
       and tablespace_name is not null;
    

    出力は次のようになります:

        TABLE_PRIVILEGE_MAP           ,SYSTEM                        
        SYSTEM_PRIVILEGE_MAP          ,SYSTEM                        
        STMT_AUDIT_OPTION_MAP         ,SYSTEM                        
        DUAL                          ,SYSTEM 
    ...
    

    これは、すべてのフィールドを入力してコンマで連結するよりもはるかに面倒ではありません。必要に応じて、簡単なsedスクリプトでフォローアップして、カンマの前に表示される空白を削除できます。

    このようなものがうまくいくかもしれません...(私のsedスキルは非常に錆びているので、これにはおそらく作業が必要です)

    sed 's/\s+,/,/' myfile.csv 
    


    1. SQL-varcharデータ型を日時データ型に変換した結果、値が範囲外になりました

    2. SQL Serverへの接続の確立中に、ネットワーク関連またはインスタンス固有のエラーが発生したのはなぜですか?

    3. MySQLのINDEX、PRIMARY、UNIQUE、FULLTEXTの違いは?

    4. MariaDBで年齢を計算する方法