OS:Windows Server 2003
DB:Oracle10g(10.2.0)
sqlplusでselect結果をcsvファイルにspoolする際に空白行が出力されて困っています。
以下のsqlを実行した場合、
-----
SET ECHO OFF
SET FEEDBACK OFF
SET HEADING OFF
SET PAGESIZE 0
SET LINESIZE 2000
SET TERMOUT OFF
SET TRIMSPOOL ON
spool test.csv
select '"'||col1||'","'||col2||'","'||col3||'"'
from table;
spool off
-----
改行を含むカラムを含む行の後に空白行が出力されます。
(2レコード目のcol3は"g"と"h"の間に改行コードがあるデータが格納されているが、何故か2レコード目と3レコード目の間に空白行が出力される)
-----
"abc","def","ghi"
"abc","def","g
hi"
"abc","def","ghi"
-----
これはsqlplusの仕様でしょうか。
2行目と3行目の間の空白行を削除してspoolする方法はありますでしょうか。
なお、改行を含むカラムの改行を改行以外の文字に置換して出力した場合は、以下のように空白行が出現しません。
-----
"abc","def","ghi"
"abc","def","gカイギョウhi"
"abc","def","ghi"
-----
No.1ベストアンサー
- 回答日時:
sqlplusの仕様だと思います。
どこまでが1行かわからなくなるから、とかそういう理由ですね。
sqlplusのオプションで回避する手は私も知りません。
なので、どうしてもspoolしたいとすれば、SET SERVEROUT ONも切って、無名ブロックを実行するとかになります。
DECLARE
lines CLOB;
CURSOR cu IS SELECT L
FROM (SELECT '"' || col1 || '","' || col2 || '","' || col3 || '"' AS L FROM table);
BEGIN
FOR cu_row IN cu LOOP
IF lines IS NULL THEN
lines:=cu_row.L;
ELSE
lines:=lines || CHR(13) || CHR(10) || cu_row.L;
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE(lines);
END;
これであれば、全部つないで1行なので、空白行はでません。
面倒くさいですけどね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELで同一セル内で自動的に改行されてしまう(難問) 6 2023/04/16 00:51
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- UNIX・Linux bashでシングルクォート内の変数の組み込み方教えてください。 2 2023/02/14 19:30
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/03/09 14:24
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 10:07
- 数学 △ABC≡△DEF≡△GHIという感じで書き表すのはダメですか? 3 2022/10/23 01:58
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) Excelで、半角スペースをTABに変換する 5 2022/10/18 14:18
- Excel(エクセル) Excelの関数で実現可能か知りたいです 5 2023/08/06 08:58
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
selectした結果の余計な余白を取るにはどうしたらよいのでしょうか
Oracle
-
sqlplusでヘッダーが付かない
Oracle
-
SQL Plusで項目名が最後まで表示されない?
Oracle
-
-
4
oracle spool SJIS → UTF-8
Oracle
-
5
SQLPLUSで結果を画面に表示しない
Oracle
-
6
sqlplusで表示が変なので、出力を整形したい。
Oracle
-
7
動的にSPOOLファイルのファイル名を生成したい
Oracle
-
8
ファイルの先頭行を全て削除したい
Windows Vista・XP
-
9
バッチからsqlplusの接続エラーの検知について
その他(プログラミング・Web制作)
-
10
SQL*Plusで、コマンドの返答を非表示にする方法
Oracle
-
11
PL/SQLで@ファイル名が反応しません
Oracle
-
12
set lineで不要な改行が出力される。
Oracle
-
13
シェルスクリプトでオラクルのエラーメッセージを取得するには
Oracle
-
14
PL/SQLでSPOOLさせたいのですが、可能でしょうか?
Oracle
-
15
Oracleでの文字列連結サイズの上限
Oracle
-
16
【PL/SQL】FROM区に変数を使う方法
Oracle
-
17
不明なコマンドです(FROM")。行の残りは無視されました。 のエラー"
Oracle
-
18
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
19
Dosブロンプトでtabを出力したい
その他(プログラミング・Web制作)
-
20
sqlplusの処理が途中でとまる
Oracle
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
sqlplusでヘッダーが付かない
-
全角空白のTRIMができない...
-
sqlplusのspoolで空白行出現
-
DB2のSELECTでカンマ編集につい...
-
PL/SQLでSPOOLさせたいのですが...
-
SPOOLのファイル名
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
Statement ignored というエラー
-
エクセルVBAでUserFormを起動し...
-
SQL*Loaderでのsysdate使用
-
今日の日付が入った行のデータ...
-
likeとsubstrの使いわけについて
-
SQL*Plusの終了はquit?exit?
-
時間項目を60進数から10進数へ...
-
OSのシステム日付を変更して...
-
ODBCリンクの際にACCESSでは読...
-
VBA プロシージャの名前の取得
-
PL/SQLにて、マスタから取得し...
-
Accessの数値から時間に変換す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
sqlplusでヘッダーが付かない
-
全角空白のTRIMができない...
-
sqlplusのspoolで空白行出現
-
PL/SQLでSPOOLさせたいのですが...
-
DB2のSELECTでカンマ編集につい...
-
SPOOLのファイル名
-
オラクルのデフォルトセッション数
-
オラクル10gで開発を行ってい...
-
セッション数(ピーク)の履歴
-
AL32UTF8でJIS第三水準文字を挿...
-
SYSTIMESTAMPの表示桁
-
MySQLの関数でCHARと言うのがあ...
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
エクセルVBAでUserFormを起動し...
-
Statement ignored というエラー
-
ODBCリンクの際にACCESSでは読...
-
Accessの数値から時間に変換す...
-
今日の日付が入った行のデータ...
-
SQLで部分的にGROUP BYしたいとき
おすすめ情報