Oracle9iでテーブル内容をスプール出力していますが、カラム単位で余白を削除したい
(トリムをかけたい)ので以下のようにカラムを連結させてスプールしています。
set colsep ','
spool test.csv
select
a ||','||
b ||','||
c
from test_table
spool off
実際の項目数は100以上あり、レコードの最大長も数千バイトになりますが、
各項目にMAXの値を入力して上記スプールを実行したところ、以下のエラーメッセージが
出力されました。
「ORA-01489: 文字列を連結した結果、長さが最大長を超えました」
データを連結した結果の長さが上限を超えたということなのでしょうが、
この最大長はどこで設定されているものなのでしょうか?
また、そもそもスプール出力でトリムが効かないためにこのようなやり方で
出力していますが、他によい方法をご存知の方いましたら教えて下さい。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
>>Code Tipsの内容も実際に試してみたのですが、結局のところ項目を連結させる
>>やり方では4000バイトまでが限度ということだと判断したのですが
4000バイトまでが限度 とは、どのような理由からでしょうか?
以下のSQLで4000バイトオーバーは可能です。(32KBの壁はあります)
既に完成度の高いスクリプトがデバッグ済みで存在するのに
同じものを 1からコーディングするのは、(自分の勉強にはなるとは思いますが) 意味のない行為だと思いますので、
Code Tipsをお勧めしました。
SPOOL HOGE.TXT
SET PAGESIZE 0
SET LINESIZE 32767
SET LONG 40000
SET LONGC 40000
SET TRIMSPOOL ON
SET FEEDBACK OFF
SET VERIFY OFF
SELECT
TO_CLOB('')
|| LPAD('1', 4000,'1')
|| LPAD('2', 4000,'2')
|| LPAD('3', 4000,'3')
|| LPAD('4', 4000,'4')
|| LPAD('5', 4000,'5')
|| LPAD('6', 4000,'6')
|| LPAD('7', 4000,'7')
|| LPAD('8', 4000,'8')
|| LPAD('9', 4000,'9')
|| LPAD('0', 4000,'0')
FROM DUAL
/
SPOOL OFF
回答ありがとうございます。やはり認識間違っていたようですね。
OcacleのSQLリファレンスで連結演算子の説明に「どちらかの文字列がVARCHAR2型の場合、
連結結果はVARCHAR2型となり、最大文字数は4000」とあります。
また、「どちらかがCLOB型の場合、結果は一時CLOB型になります」とも書いています。
GoFさんの例示されているSQLを見ると、CLOB型のデータと連結してやれば、4000バイト以上の
連結も可能ということなのでしょうか。
(最大長はCLOB型の4GBなのかと思いましたが32KBなのですね)
確かに文字列連結は4000バイト以上可能なのですが、実際にエラーの出ていたスプール処理を
以下のように変更して試してみたのですが、実行結果が何分待っても帰ってこない状態になって
しまいました。(4GBを項目数分連結するので処理に時間がかるのでしょうか?)
spool test.csv
select
to_clob('') ||
a ||','||
b ||','||
c ||','||
//以下100項目以上連結
from test_table
Code Tipsの#764は実際に試したのですが、単純に文字列連結を行っているようで、
質問と同様のエラーが出てしまいます。
#675は内容がやや複雑で実行内容がよく理解できなかったのと、TO_CLOB等も使用していないよう
なので#764と変わらないのかと思い実行は控えていました。
暗黙的な変換等、基本的な部分を理解できていないこともあり、せっかくの回答も生かせていないようです。
もう少し勉強して試してみたいと思います。いろいろとありがとうございました。
No.3
- 回答日時:
SELECT TO_CLOB('') || LPAD('A', 4001, 'C') FROM DUAL ;
通常 暗黙変換 により VARCHAR2に変換されます。
VARCHAR2の最大長は 4000バイト
すぐ下に同じような質問内容があるので、そちらのスクリプトを使用した方がよいと思います。
参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=1460873
回答ありがとうございます。返事が遅れてしまいもうし訳ありません。
連結する文字列のどちらかがVARCHAR2の場合、連結した結果はVARCHAR2の文字列となり、
最大4000バイトとなるということですね。
SQL文の内容はCLOB型のデータと連結すれば連結結果はCLOB型となり、
最大長は4GBとなるのでエラーとはならないことを言われているのでしょうか。
Code Tipsの内容も実際に試してみたのですが、結局のところ項目を連結させる
やり方では4000バイトまでが限度ということだと判断したのですが、上のCLOB型の
組み合わせ次第では4000バイト超のデータも出力可能なのでしょうか?
質問ばかりで申し訳ないのですが、認識間違ってましたら、
反応して頂けないでしょうか。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Excel(エクセル) excelにて、ある固定値から連番を振りたいが、上限値が異なる連番を振る処理を複数回行いたい場合 6 2022/10/22 11:01
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Oracle SQL update方法 2 2022/06/22 14:07
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
このQ&Aを見た人はこんなQ&Aも見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
プリン+醤油=ウニみたいな組み合わせメニューを教えて!
プリンと醤油を一緒に食べると「ウニ」の味がする! というような意外な組み合わせから、新しい味になる食べ物って色々ありますよね。 あなたがこれまでに試した「組み合わせメニュー」を教えてください。
-
好きな和訳タイトルを教えてください
洋書・洋画の素敵な和訳タイトルをたくさん知りたいです!【例】 『Wuthering Heights』→『嵐が丘』
-
ORACLEから各テーブルをCSV形式で出力するコマンド
Oracle
-
CLOB型へのINSERT
Oracle
-
selectした結果の余計な余白を取るにはどうしたらよいのでしょうか
Oracle
-
-
4
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
-
5
SQLPLUSで結果を画面に表示しない
Oracle
-
6
sqlplusのspoolで空白行出現
Oracle
-
7
SQL Plusで項目名が最後まで表示されない?
Oracle
-
8
BLOBやCLOBのパフォーマンスを改善したい
Oracle
-
9
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
10
Chr(13)とChr(10)の違いは?
PowerPoint(パワーポイント)
-
11
importについて
Oracle
-
12
ORACLEでLONG項目からCHAR項目へ桁数指定で文字列を抽出
その他(データベース)
-
13
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
14
oracle spool SJIS → UTF-8
Oracle
-
15
CASE文のエラーについて
Oracle
-
16
シェルスクリプトでオラクルのエラーメッセージを取得するには
Oracle
-
17
sqlplusの処理が途中でとまる
Oracle
-
18
PL/SQLで@ファイル名が反応しません
Oracle
-
19
update文で改行を入れる
Oracle
-
20
PL/SQL PLS-00103エラーについて
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Oracleでの文字列連結サイズの上限
-
GROUP BYを行った後に結合した...
-
SELECTで1件のみ取得するには?
-
select句副問い合わせ 値の個...
-
MERGE文を単体テーブルに対して...
-
GROUP BYを使ったSELECT文の総...
-
Access終了時の最適化が失敗?
-
Excelでセルの書式設定を使用し...
-
select insertで複数テーブルか...
-
差し込み印刷のレコード数について
-
SELECTの結果で同一行を複数回...
-
OracleのSQL*PLUSで、デー...
-
ファイル書込みで一行もしくは...
-
ACCESSの集計クエリで3件ある...
-
レコードが存在しなかった場合
-
oracleの分割delete
-
ADO VBA 実行時エラー3021
-
【MYSQL】asでリネームしてwher...
-
Accessで別テーブルの値をフォ...
-
使うべきでない文字。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Oracleでの文字列連結サイズの上限
-
GROUP BYを行った後に結合した...
-
select insertで複数テーブルか...
-
Accessで別テーブルの値をフォ...
-
実績累計の求め方と意味を教え...
-
select句副問い合わせ 値の個...
-
OracleのSQL*PLUSで、デー...
-
ADO VBA 実行時エラー3021
-
SELECTで1件のみ取得するには?
-
ファイル書込みで一行もしくは...
-
Excelで、改行がある場合の条件...
-
Excelでセルの書式設定を使用し...
-
GROUP BYを使ったSELECT文の総...
-
レコードが存在しなかった場合
-
最新の日付とその金額をクエリ...
-
SELECTの結果で同一行を複数回...
-
固定値を含む結合と複数テーブ...
-
差し込み印刷のレコード数について
-
sqlplusの処理が途中でとまる
-
カレントレコードが無い事を判...
おすすめ情報