3

Oracle データベースに接続し、単純な SELECT クエリを実行し、結果を CSV 形式で stdout に吐き出すサンプル perl スクリプトは素晴らしいでしょう。Python や、典型的な UNIX ディストリビューションで利用可能なその他の言語も問題ありません。

リモート Oracle データベースのユーザー名とパスワードだけでゼロから始めていることに注意してください。これには、適切なオラクル接続ライブラリがあるだけではありませんか?

Mathematica でこれを直接行う方法があれば、それが理想的です (おそらく、J/Link (mathematica の Java 統合機能) で可能になるはずです)。

4

7 に答える 7

8

sqlplusからファイルを作成するのと同じくらい簡単なことはどうですか...

set echo off heading off feedback off colsep ,;
spool file.csv;
select owner, table_name
from all_tables;
spool off;
于 2008-09-21T02:11:56.703 に答える
4

Python での実装は次のとおりです。

import cx_Oracle, csv

orcl = cx_Oracle.connect('ohd/john@ohddb')
curs = orcl.cursor()

csv_file_dest = "C:\\test.csv"

output = csv.writer(open(csv_file_dest,'wb'))

sql = "select * from parameter"

curs.execute(sql)

headers_printed = False
for row_data in curs:        
    if not headers_printed:
        cols = []
        for col in curs.description:
            cols.append(col[0])
        output.writerow(cols)
        headers_printed = True

    output.writerow(row_data)
于 2008-09-15T18:58:08.593 に答える
3

perl では、すべての my ローカル変数宣言を省略して、このようなことを行うことができます。また、簡潔にするために「failmessage」エラー処理を終了することもできます。

use DBI; 
use DBD::Oracle;

$dbh = DBI->connect( "dbi:Oracle:host=127.0.0.1;sid=XE", "username", "password" );

# some settings that you usually want for oracle 10
$dbh->{LongReadLen} = 65535;
$dbh->{PrintError} = 0;     

$sth = $dbh->prepare("SELECT * FROM PEOPLE");

$sth->execute();

# one example for error handling just to show how it's done in principle
if ( $dbh->err() ) { die $dbh->errstr(); }

# you can also do other types of fetchrow, see perldoc DBI 
while ( $arrayref = $sth->fetchrow_arrayref ) {
    print join ";", @$arrayref;
    print "\n";
}

$dbh->disconnect();

人々がコメントで尋ねたので、2つのメモ:

  • sid=XE は Oracle サービス ID で、データベースの名前のようなものです。無料版の oracle をインストールすると、デフォルトで「XE」になりますが、変更できます。
  • DBD::Oracle をインストールするには、システムに Oracle クライアント ライブラリが必要です。これをインストールすると、必要なすべての環境変数も設定されます。
于 2008-09-15T18:44:33.850 に答える
0

Mathematicaにはこれを簡単にするパッケージ「DatabaseLink」が組み込まれていますが、Oracle用のドライバを見つける必要があります。「Oracleクライアントライブラリ」をインストールすると、それが実行されます...

于 2008-09-15T19:01:10.287 に答える
0

私は PERL プログラマーではありませんが、調査した方がよい追加機能をいくつか紹介します。Oracle の外部テーブルの概念を見てください。次のような定義でテーブルを作成します。

CREATE TABLE MY_TABLE
(
  COL1    NUMBER(2),
  COL2  VARCHAR2(20 BYTE)
)
ORGANIZATION EXTERNAL
  (  TYPE ORACLE_LOADER
     DEFAULT DIRECTORY SOME_DIRECTORY_NAME
     ACCESS PARAMETERS 
       ( FIELDS TERMINATED BY ','
         MISSING FIELD VALUES ARE NULL
       )
     LOCATION (SOME_DIRECTORY_NAME:'my_file.csv')
  )
REJECT LIMIT UNLIMITED;

この DDL ステートメントは、「SOME_DIRECTORY_NAME」という名前のディレクトリが既に作成されていることを前提としていることに注意してください。その後、DML コマンドを発行して、このテーブルにデータを出し入れすることができます。コミットが完了すると、データはファイル my_file.csv にきれいに整頓されます。その後、PERL マジックを実行して、必要な場所にファイルを取得します。

于 2008-09-17T15:53:59.487 に答える
0

Oracle Application Express を入手してください。これは、データベースに無料で付属するブラウザー ベースのツールです。レポートをすばやくクリックして、CSV (または Excel) を出力形式として指定できます。(完全なアプリケーションの構築にも使用できます)。

ここには、大量のドキュメント、デモなどがあります: http://apex.oracle.com

この URL からツールをダウンロードすることも、無料のワークスペースに登録して、Oracle サーバーでツールを試してみることもできます。

于 2008-09-15T19:35:53.777 に答える