スプレッドシートにプルしたり、さらに処理したりするために、特定のSQLクエリをタブで区切られた出力に変換するのに役立つsqlplus構成ディレクティブの優れたセットを持っている人はいますか?
Justinがリンクで指摘したように、_set colsep
_関数のSQLPlusコマンドを使用すると、列ごとに区切り文字を入力する手間が省けます。
ただし、タブ区切りの場合、set colsep Chr(9)
は機能しません。
UNIXまたはLINUXの場合は、_set colsep ' '
_を使用し、一重引用符の間のスペースを入力タブにします。
Windowsの場合、次の設定を使用します。
_col TAB# new_value TAB NOPRINT
select chr(9) TAB# from dual;
set colsep "&TAB"
select * from table;
_
私が何度も盗んだ特定のスクリプトの1つは、 フラットファイルへのデータの抽出 のAskTomスレッドからのものです。 SQL * Plusからすばやくダーティなフラットファイルが必要な場合。ただし、進行中のあらゆる種類のプロセスでは、トムがそのスレッドに以前に投稿したDUMP_CSV関数を好む傾向があります。
私は愚かな解決策を得ました。それは非常にうまくいきました。
SELECT column1 || CHR(9) || column2 || CHR(9) || column3 ... ...
FROM table
実際には、それは単なる文字列連結です。
CHR(9)-> '\ t'
column1 || CHR(9)|| column2 ->concat(column1、 '\ t'、column2)
タブ文字は表示されませんが、次のように入力すると:-
colsepZを設定します
ただし、Zの代わりに、キーボードの1つでTabキーを押してから、Enterキーを押すと機能します。 SQLPlusは、スペースの次の文字(非表示のタブ)がcolsepであることを理解します。
すべての設定を/cli.sqlという名前のファイルに配置したので、これを実行します:-
@/cli.sql
それらすべてをロードします。
set serveroutput on
SET NEWPAGE NONE
set feedback off
set echo off
set feedback off
set heading off
set colsep
set pagesize 0
SET UNDERLINE OFF
set pagesize 50000
set linesize 32767
connect use/password
(注意-行末の非表示スペースの後に非表示タブがあります:)
set colsep
楽しい!