• ベストアンサー

★Oracle8i★ データベースの中の文字列を検索してくれるフリーソフト探しています。

ご存知の方、どうかおしえて下さい。データベースの中の指定した文字列を検索して、どのテーブルのどのカラムに格納されているかがわかるフリーのソフトはないでしょうか? 環境 : Win XP 利用DB:Oracle8i 宜しくお願いいたします

  • Oracle
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
  • sippo06
  • ベストアンサー率25% (7/27)
回答No.2

NO.1です。 ごめんなさい。 CREATEの行を 「CREATE OR REPLACE FUNCTION SERCH_TXT」にしてください。 (私のデータベースのユーザー名がついてました)

その他の回答 (1)

  • sippo06
  • ベストアンサー率25% (7/27)
回答No.1

こんにちわ。 PL/SQLで似たようなことを調べたことがあります。 よろしかったらどうぞ。 CREATE OR REPLACE FUNCTION RESOW.SERCH_TXT ( Taget_TXT IN Varchar2, --探したい文字列 Target_Owner IN Varchar2--テーブルを持つユーザー ) RETURN Varchar2 IS --テーブル名・列名をディクショナリビューから取得 CURSOR GetFld IS SELECT * FROM ALL_TAB_COLUMNS where DATA_TYPE='VARCHAR2' AND OWNER = Target_Owner; --SELECT文を生成する変数 STR_SQL Varchar2(20000); --探したい文字列のレコード数を取得する変数 Counter Number; --テーブル名・列名を返すためのバッファ strReturn Varchar2(20000); BEGIN For CurRec IN GetFld Loop Counter := 0; --探したい文字列のレコード数を取得するSELECT文を生成 STR_SQL := 'SELECT COUNT(*) FROM ' || Target_Owner || '.' || CurRec.TABLE_NAME || ' WHERE ' || CurRec.COLUMN_NAME || ' LIKE ' || '''%' || Taget_TXT || '%''' || ' HAVING COUNT(*) > 0 '; Begin --SELECT文を実行 EXECUTE IMMEDIATE STR_SQL INTO Counter; Exception --該当なしの場合、0をカウント WHEN NO_DATA_FOUND THEN Counter := 0; END; IF Counter > 0 Then --カウントが0以上の場合、テーブル名・列名をコンマつなぎでバッファに格納 strReturn := strReturn || ' , ' || CurRec.TABLE_NAME || '.' || CurRec.COLUMN_NAME; End if; End Loop; return strReturn; Exception WHEN NO_DATA_FOUND THEN return '該当なし'; END; /

関連するQ&A

  • 指定した文字列を含まないファイル検索

    Win7ですが、指定した文字列を「含まない」ファイル検索をする方法・フリーソフト等はないでしょうか?

  • ApacheWebサーバがあるサーバから,別サーバにあるOracle8iデータベースに接続するには

    Webサーバ(ApacheWebサーバ)がインストールしてあるサーバとは別に, データベース(Oracle8i)がインストールしてあるサーバに接続したいのですが, とある文献に, ==================== Oracleの場合、データベースへの接続は「ocilogon関数」を利用します。 この関数 は、下記のように接続するデータベースとユーザーを指定します。 関数の返り値と して、接続IDが返されるので、そのIDを変数に受け取るようにしておきます。 ocilogon("ユーザー","パスワード","接続文字列"); // Oracleとの接続 $conn = OCILogon("scott", "tiger", "orcl"); ===================== という記述がありました. このような記述だけで,別サーバにあるOracle8iへ接続可能なのでしょうか? さらに, ===================== 「また、ここで「接続文字列」を指定することによって、  Webサーバとは別のサーバで稼働 しているデータベースへの接続も可能です。」 ===================== という記述もあります. 接続文字列(orcl)を入力しただけで,別サーバにあるデータベース に接続することは可能なのでしょうか?私が思うにはデータベースサーバの IPアドレスなどの情報がないと無理な気がするのですが,どうなのでしょうか? よろしくお願いします.

    • 締切済み
    • PHP
  • Access2000とOracle9iデータベースとのメリット、デメリットについて

    データベースから検索システムを構築しようと考えています。 データ件数2000件 Access2000又はOracle9iデータベースソフトを使って 構築しようと考えています。 Access2000又はOracle9iのデータベースソフトを使った時の メリット・デメリットを教えてください。 (例)          メリット             Access2000 後のシステムメンテがある程度簡単           デメリット         検索スピードが、Oracle9iに比べて遅い          データの容量が1GB迄?              メリット   Oracle9i    検索スピードが、Accessに比べて早い。                       デメリット          システムメンテがAccessに比べて難しい。 上記に例を書いてみましたので、おかしい所、又は他にありましたら 追記してもらえるとよろしくお願いします。

  • 安価もしくはフリーのデータベース

    以前Delphi5+Oracle8~9iを使用して業務ソフトの開発をしていました。 最近になってまた経理アプリの作成を行おうと思ったのですが、 Oracleはコスト的に×です Delphiとの相性がよく、フリーもしくは安価な DBソフトを教えてください。 予定環境は  Win2000Server+Winクライアント(20台程度)  10件未満の同時トランザクションの発生  100件/月のデータ蓄積

  • 含まれる文字列の検索

    ソースコードに「<title></title>」が含まれているhtmファイルを見つけるために、「スタート」→「検索」→「含まれる文字列の検索」に「<title></title>」を指定して検索しても、そのhtmファイルがヒットしません。 同じフォルダーをWin2000で同じ方法で検索するとヒットします。 「含まれる文字列の検索」の検索対象について何か設定があるのでしょうか?

  • 「Oracle 9i」について

    「Oracle 1.7.3.4」でエクスポートしたデータを、 「Oracle 9i」にインポートした後、 参照すると最後のデータの値がおかしくなってしまいます。 (今のところわかっているのは、8と9が2に変わることです。) レコードの最後がCOMP-3で終わっているのがいけないのでしょうか? よくわからないので、どなたか教えて頂けないでしょうか? (例) *テーブルのレイアウト* CREATE TABLE DB (DB_REC VARCHAR2(21), DB_KEY1 VARCHAR2(9), DB_KEY2 VARCHAR2(1)) TABLESPACE DB_TSPACE STORE (INITIAL 300K NEXT 100K MINEXTENTS 1 MAXEXTENTS 10 PCTINCREASE 0 ); *コピー句* 01 DB-REC. 03 DB-KEY. 05 DB-KEY1 PIC 9(09). 05 DB-KEY2 PIC 9(01). 03 DB-KBN PIC X(01). 03 DB-INYMD PIC 9(08) COMP-3. 03 DB-OUTYMD PIC 9(08) COMP-3. です。よろしくお願いします。

  • 長さ1の空文字列?

    タイトルの通り、長さ1の空文字列で困っています。 現在、Linux、Apache、MySQL、PHPを使って3階層アプリケーションを作っています。 予めMySQLでテーブルの形を決めておいて、CSVからデータを読み込ませておき、 PHPでSQL文を実行してレコードを取得することで、それらをユーザに表示という感じです。 複数あるカラムのうち、空文字列(CSV上でブランクだったもの)は表示させたくないので、 PHPで「 if(カラム=="")~ 」のように比較することで、空文字列だけ避けるつもりでした。 しかし上手くいかなかったので、strlen()で調べて見たところ、返り値が1でした。 本来は空文字列に対してstrlen()は0或いはfalseの返り値を返しますよね。 is_empty()でも空データ扱いにならず、当然NULLの扱いでもありません。 そのため、実データとの区別が出来ずに困っています。 何故、空文字列のカラムを除外したいかというと、 DB上のユニークなレコードを検索したいからです。 select * from where カラム='データ' and カラム='データ'… という風に。 「カラム=''」としてしまうと検索に引っかからなくなってしまいます。 どうすればよいでしょうか。 以下はそれぞれのバージョンです。 MySQL:5.0.95 PHP:5.1.6 Linux:RHEL5 Apache:2.2.3

    • ベストアンサー
    • PHP
  • 文字列に対してPHP上で一括置き換えしたい

    DBにあるテーブルの指定されたカラム全てを文字列に対してPHP上で一括置き換えしたいです。 phpアドミン上でSQL文を使って UPDATE `テーブル名` SET フィールド名A=REPLACE (フィールド名A,"置換前の文字列","置換後の文字列"); で実行したらうまくいくのですが、 これをPHP上で処理したいと考えてます。 require("godb.php");//DBにアクセス $sql ="UPDATE テーブル名 SET フィールド名 = REPLACE(フィールド名,"AAA","BBB")"; mysql_query($sql2); と実行してもうまくいきません。。。 これって、、、一個一個対象カラムをPHP上で取り出してから 処理をかけないといけないのでしょうか。。 アドバイスいただけたら幸いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • Excel VBA で Oracle CLOB型カラムの文字列を取得する方法

    Excel VBA を使用して、Oracleに格納されている文字列を取得しようとしています。 Number型やVarchar2型のカラムからは問題なく取得できるようになったのですが、CLOB型で文字列を格納しているカラムからの取得でつまずいています。 自分の書いた方法だと、1600バイト以上の文字列が格納されているとエラー文字が返ってきてしまいます。 これ以上の文字数を取得する方法について教えてもらえないでしょうか? '---// コード抜粋 ココから //--- 'ORAセッション生成 Set OraSession = CreateObject("OracleInProcServer.XOraSession") 'ORADB生成 Set OraDatabase = OraSession.OpenDatabase(<<dbname>>, <<id>> & "/" & <<passwd>>, 0) Dim SQL As String '一覧取得用SQL Dim RS As Object 'レコードセット SQL = " SELECT <<<clob_col_name>> FROM <<table_name>> " Set RS = OraDatabase.DbCreateDynaset(SQL, 0&) Range("A1").Value = RS.fields("<<clob_col_name>>").GetChunk(0, 3263) RS.Close '---// コード抜粋 ココまで //--- 環境は、Excel 2003、Oracle 9iです。 ひとつよろしくお願いいたします。

  • ランダム文字列をDBにINSERT

    はじめまして。お世話になります。 LAMPでWEBシステムを作成しております。 ランダムな文字列をDBにINSERTする処理に関して質問させて頂きます。 条件: ・DBに入るランダムな文字列は重複不可。 ・ランダムな文字列は[a-zA-Z0-9]の10桁とする。 ・1度の処理で、ランダムの文字列は確実にINSERTさせる。 ・同時に多数の処理が走ることがある。 ・処理は速いに越したことない(DBの負荷も低めがよい) 環境: PHP 4.4.4 Mysql 5.0.33 使用ストレージエンジン:MyIsam 私が思いついたのが以下の2通りです。 (1) ランダム文字列が入るカラムをユニークキーとし、PHP側で作成されたランダム文字列をINSERT。 重複していたらエラーが返ってくるが、正常にINSERTされるまでPHP側でループ。 (2) 対象テーブルをロックし、PHP側で作成されたランダムの文字列をSELECT。 なければその文字列をINSERTし、テーブルロック解除 (1)はループが少し怖く、(2)はDBへの負荷がかかってしまいそうですが どちらがよいでしょうか? もしくは、他に何か方法があればご教授頂けるとありがたいです。 また、現在MyIsamを使用しておりますが、場合によってはストレージエンジンの変更も 考えておりますのでその点も考慮して頂けると幸いです。 ちなみに検索条件は、ランダムの文字列をキーに全てのデータを取得するくらいです。 そのテーブルは、カラム数15、レコード数1,000万の見込みです。 以上、長くなりましたがよろしくお願いします。

    • ベストアンサー
    • PHP