• ベストアンサー
  • すぐに回答を!

オラクルからのデータ取得について

こんにちわ。 下にも質問したのですが・・・ シェルからオラクルDBにアクセスし、データを取得する処理を行いたいのですが、 sqlplusで、実行結果をファイルに出力する方法はありますでしょうか? よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数808
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2
  • TMINET
  • ベストアンサー率32% (45/140)

SET SERVEROUTPUT ON WHENEVER SQLERROR EXIT FAILURE SPOOL filename ...まあいろいろSQLを実行。 SPOOL OFF xxx.lstというファイルが出来ていると思います。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答、ありがとうございます! これで解決しそうです。

その他の回答 (1)

  • 回答No.1
  • osamuy
  • ベストアンサー率42% (1231/2878)

a)コマンドSPOOLを使う。 b)普通にリダイレクトする。 ――で良いのでは。 SPOOLについては、SQL*Plusのヘルプを、リダイレクトについては各shellのmanをどうぞ。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答、ありがとうございます。 リダイレクトはやってみたのですが・・・ 接続情報等も出力されてしまい、結果のみを取得できなかったので困っています。 以下のコーディングをしたのですが、selectの結果のみを取得したいと思っています。 シェル ----- sqlplus ユーザーID/パスワード @実行するSQLファイル 実行するSQLファイル ----- SET HEAD OFF; whenever SQLERROR EXIT SQL.SQLCODE; select * from テーブル名; EXIT;

質問者からの補足

下の質問と合わせ、2回も回答をいただき、ありがとうございました。

関連するQ&A

  • オラクルDBからのデータ取得について

    こんばんわ。 オラクル(sqlplus)についての質問2点です。 (1)シェルからオラクルDBへアクセスし、データを取得したいのですが、  select時に、結果のヘッダーをつけずに結果(データ)のみをファイル出力することは可能でしょうか? (DB2で言うところの「-x」オプションのような・・・) (2)エラー時にSQLコードを取得したいのですが、SQLコードをファイル出力することは可能でしょうか? オラクルは初心者で、行き詰まってしまいました・・・ どうかよろしくお願いします。

  • シェルスクリプトでオラクルのエラーメッセージを取得するには

    シェルスクリプト上でsqlplusを起動し、さらにSQLの実行結果(エラーメッセージ)を取得するにはどのようにシェルをどのように記述すればよいでしょうか? ---------------------------------------- sqlplus scott/tiger@hoge SQL>select * from dep; * 1行でエラーが発生しました。 ORA-00942: 表またはビューが存在しません。 ---------------------------------------- 上記のようなコマンド実行とエラーメッセージの取得を行いたいのですが、シェルについては超初心者のためよく分かりません。 実行環境は以下の通りですが、ご存知の方教えて頂けないでしょうか。よろしくお願いします。 OS:Red Hat Linux 8.0 DB:Oracle8.1.7

  • 列の名前を消したい

    DBはオラクル、telnetからsqlplusを利用してデータを取り出してます。 出力される列の名前を始めから表示させないようにしたいのですが、そのようなことはできるのでしょうか? また、もしできるであれば、その方法を教えてください。 よろしくお願いします。

  • オラクルDBのデータ削除タイミング

    お世話になります。 .NETとオラクルで作られた小さいシステムを引き継ぎました。 その中にメインになるDBがあり3ヶ月以前のデータは .NETの夜間削除処理APでDELETEしています。 そのメインDBにトリガーテーブルがあるのですが、1日分の データしか保存されていません。 しかし、どこで消えているのかが見つけられないでいます。 .NETの全APを検索してもないし、オラクルの機能であるような気が しているのですが、よくわかりません。 トリガーの条件は「INSERT」と「UPDATE」です。 どなたかヒントを下さい

  • sqlで日付が一番古いデータの月を取得する方法

    言語:php DB:postgresql 質問させて頂きます。 現在DBに入ったデータから一番古い年月を取得しようとしています。 「DBの中身(仮)」 [id][date] 1 2012-05-18 18:20:16.064554 2 2012-04-17 18:43:12.732035 この際古いのは2個目のデータなので、 これを判断して「201204」という形で取得したいと考えているのですが、 この処理を行うにはどのようなSQLを実行すればよいのでしょうか? SQLのみで判断できるのか、一旦全データを取得したうえでPHPで判断する必要があるのか、 もじ方法をご存知の方がいらっしゃいましたらよろしくお願い致します。 また、質問に不備がありましたら、すぐに修正致しますのでご指摘お願いします。

    • ベストアンサー
    • PHP
  • オラクルとは?

    初めまして。yama3desuと申します。お願いします。 所属する団体の集計作業で、私は、Accessで可能だと思うのですが、 業者から持ってきているのは、オラクルなのです。 結構な価格でもあり、考えているわけですが、 正直、オラクルにする優位性がわかりません。 データ自体は、会員のプライバシーもあり、公開できるものではありません。 業者と交渉している当事者ではないのでありますが、後学のためにお教え願いたいと存じます。 格好は悪いかもしれませんが、会員がアクセスのファイルで、 データベースを作り、集計すればいいのじゃないかと私は思っています。 完全な詳細は説明できないので、回答しにくいとは思いますが、 オラクルという事は、Linuxですよね。 という事は、所属する団体の事務所は当然、windowsですが、 もう1台パソコンをセットで購入せねばならないということになるのでしょうか。 オラクルならば、ファイルサーバーにおいて、 同時に事務の2人で集計作業を進めていけるとか、 (アクセスならば、1ファイルを同時に作業できるのは一人ですよね。) などなど。データベースの事に詳しくないのでお尋ねします。 そもそも、オラクルというのを採用するのはそんなにいいのでしょうか。 具体的な説明が不足しているに違いないので、ご回答に繋がりにくいとは思います。 何か、お教えいただければ、幸甚です。m(_ _)m

  • オラクル オブジェクトのデータサイズ抽出SQLについて

    お世話になります。オラクルのSQLについて教えて下さい。 データサイズについて調査したく、下の条件でデータを抽出したいと考えています -------------------------------------------------所有者はSQLPlusで最初にログインしたユーザの 頭文字が "MY" で始まるオブジェクト全て(テーブル・インデックスなど)のデータサイズ を知りたいと考えているのですが・・・ ------------------------------------------------- 全てのオブジェクトでなくとも、テーブルやインデックスごとのデータサイズを抽出でも 良いのですが、どなたかご教授下さい。 宜しくお願い致します。

  • Linuxシェルでの大量データ投入スクリプト

    Linuxシェルでの大量データ投入スクリプト パフォーマンステスト用の大量(数千万件単位)のデータを DBに投入したいと思っています。 これをLinuxシェルで作成しようと思っています。 今まではsqlplus(あ、DBはoracleです)でログインしてから 複数のSQL文をベタベタ列挙したテキストファイルを読み込んで実行したり シェルの中で1回ずつコネクションを作成して処理を行なう というどちらかの方法しか行なったことがありませんでした。 あと、PLSQLで行なう方法もやったことはありますが、今回は 勉強の意味で、Linuxシェルのみを使用して行ないたいと思っています。 今回は、以下の条件・方針で行ないたいと思っています。とりあえず。 ・すべてのSQL文を記述するのではなく、レコードごとに変化する  IDの部分だけをシェルで埋め込む方法にしたい ・コネクションは何度も接続しなおすのではなく、まとめて1回で行ないたい ・ある程度の件数ごと(実質的には500件くらい)にコミットを行ないたい ・とりあえずLinuxシェルでやってみたい ・とりあえずストアドなしでやりたい 途中まで以下のソースを作成しました。 あとはechoの部分を書き換える感じなのですが、 コネクション管理の方法がわからずつまづいています。 まずは、Linuxシェル内でのコネクション管理をすることが出来るのかどうかを 教えてください。もしできるのであればその方法等を教えてください。 出来れば具体的な記述を下記シェルに埋め込む形での解説をお願いしたいです。 よろしくお願いします。 #!/bin/sh declare -i I=10 echo 【DBコネクション取得】 until [ ${I} -eq 0 ] do echo 【ID部分を埋め込んでINSERT文作成】 echo 【INSERT文実行】 if [ `expr ${I} % 3` -eq 0 ]; then echo 【commit文】 fi I=${I}-1 done echo 【commit文】 echo 【DBコネクション切断】

  • BシェルでSQL文を実行

    【OS:AIX】 あるユーザーでCRONを組んでおり、オラクルのプレシジャを読み込ませるシェルプログラムをCシェルで組んでありました。 それをとある理由でBシェルに変更させてチェックしております。 ところがBシェルに変更してから以下のsqlplus文で失敗してしまいます。 ただ、単独でshファイルを実行するときは、SQL文も読み込んでくれて問題なく正常に終了するのですが、crontabで実行させるとSQL文を読み出すところで失敗してしまいます。 何かいけないところはありますでしょうか # SQL*Plusを呼び出しデータ作成 sqlplus ID/PASSWORD@SID < $HOME/script/data.sql ユーザアカウント自体はデフォルトでKシェルで作成されたユーザです。

  • EXCELのVBAでの他EXCELデータ取得&表示

    EXCELのVBAを使い、実行したEXCELのシートに他のEXCELから読み込んだデータを取得&表示させたいと思っています。 取り込むEXCELファイルは、フォルダに格納された複数の同フォーマットのデータになります。 指定したフォルダの中の全てのEXCELファイルのデータを読み込んで、 実行したEXCELファイルのシートに複数行書き込んでいくような形になります。 機能として必要なのは以下の通りです。 ・取り込みファイルの保存されたフォルダの選択 ・選択したフォルダ内のファイルを開き、VBA側で設定した箇所のデータを読み込み、それを実行側のシートに出力する。(1ファイルにつき1行表示させる形。読込元と出力先のデータの位置関係は違います。色々入力されているファイルの必要部分だけを抜き出し、一行に出力する感じです) ・フォルダ内の全ファイルに対して同じ処理を繰り返す。(出力先の行は1行ずつ下にずれる) このようなVBAはどのように作ればよろしいでしょうか?