私は17列を使って時間を節約するために次の方法をお勧めします。私はデリミタとしてあなたが望むだろうと思う。
だから、最初のあなたは(私はUSER_TABLESにクエリを使用していますが、あなたが簡単にあなたのニーズに合わせて、クエリを変更することができます)コマンド自体を生成することができます
set pagesize 0
set linesize 5000
set trimspool on
(select q'!"my sql connection"<<EOF>> test_file.csv
SET TAB OFF ECHO OFF FEEDBACK OFF LINESIZE 5000 SQLPROMPT '' TRIMSPOOL OFF HEADING OFF UNDERLINE OFF PAGESIZE 0!' from dual)
union all
(select
q'!select '!' ||
listagg(column_name, ',') within group (order by table_name)
|| q'!' from dual union all!'
header
from all_tab_cols where table_name =
-- MODIFY TO YOUR TABLE NAME HERE [1]:
'USER_TABLES'
)
union all
(select
'select ' ||
listagg(column_name, q'! || ',' || !') within group (order by table_name)
-- REPLACE USER_TABLES TO YOUR TABLE NAME HERE [2]:
|| ' from user_tables where rownum <= 50;'
cmd
from all_tab_cols where table_name =
-- MODIFY USER_TABLES TO YOUR TABLE HERE [3]:
'USER_TABLES'
)
union all
(select 'exit
EOF' from dual);
あなたはこのクエリをテストして、あなたとUSER_TABLESを置き換えることができます([1]、[2]、[3]行に続く)3つの場所で独自のテーブル名を使用します。
その後、SQL * Plusの結果を取得し、実行すると期待どおりの結果が得られます。
希望します。
SQL * Plusでは、 'select * 'を使用してCSV出力を取得したり、とにかく好ましい特定の列を選択したりすることはありません。 (ただし、SQLclとSQL Developerにはオプションがあります)。あなたは 'colsep'を変更することができますが、空白のロードを取得します。行の最大長は何ですか?すべての列の合計サイズ(暗黙的な数値/データ変換あり)?あなたは同じOS上でファイルを実行して開いていますか?開いたファイルによっては、改行の問題が発生している可能性があります。改行のある値がありますか?例を表示すると、もちろん役立ちます。 –