0

sqlplus クエリから csv 出力ファイルをフォーマットする必要があります。char および varchar 出力フィールドは、テーブルの最大列サイズで出力されます。これは、多くの列に余分な空白とコンマ区切りがあることを意味します。csv ファイルの余分な空白を取り除くにはどうすればよいですか? また、数値フィールドの周りに "" を取得するにはどうすればよいですか?

4

2 に答える 2

2

フィールドを連結し、自分で引用符を追加する必要があります。また、データ内の二重引用符をエスケープすることを忘れないでください。データにコンマまたは二重引用符が含まれていない限り、二重引用符は厳密には必要ありませんが、それらを追加しても問題はありません。

SELECT '"' || numcol || '",',
       '"' || REPLACE(strcol0, '"', '""') || '",',
       '"' || REPLACE(strcol1, '"', '""') || '"'
  FROM some_table;

これを実行する前に、おそらく見出しとフィードバックをオフにしてから、ファイルにスプールすることをお勧めします。

SQL> set heading off
SQL> set feedback off
SQL> set pagesize 0
SQL> spool output.csv
SQL> SELECT ... FROM ...;
SQL> spool off
于 2010-08-19T01:32:39.253 に答える
0

トリム関数を使用して、先頭/末尾のスペースを取り除くことができます。

http://www.adp-gmbh.ch/ora/sql/trim.html

SELECT TRIM(col) FROM table;

数値フィールドが引用符で囲まれている理由がわかりません。おそらく、列を連結する方法に関係があるのでしょうか?

D.Shawley が尋ねたように、CSV の生成に使用している SQL の例をここに投稿していただけると助かります。

于 2010-01-05T21:08:11.627 に答える