2016-09-30 5 views
0

ORACLE SQlデータベースにアクセスするために、ベースSASとRODBCをRで比較する。RODBCを使用して何千もの観測を失う

私はORACLE SQLデータベースにアクセスしようとしています。私はこのコードでSASでこれを実行する場合:

LIBNAME LIBNAME ORACLE SCHEMA=SCHEMA PATH="*****"; 

PROC SQL ; 
CREATE TABLE work.eval_view AS 
SELECT * 
    FROM LIBNAME.VW_EVALUATION 
    ORDER BY ***** ; 
QUIT; 

私はこのコードを実行すると、私は私が期待するものです153777回の観測を、得ます。

次に、このコードをRで実行したいと思います。私はRODBCライブラリを使用しています。これは私が走っているコードです:

connect <- odbcConnect(dsn='****', rows_at_time =1, believeNRows=FALSE) 

evaluation <- sqlQuery(connect, "SELECT * FROM ****.vw_evaluation") 

しかし私は4239の観測結果を得ます。入って来る実際の観測はSASから来た観測と同じですが、観測の大部分が欠落しています。

私がrows_at_time入力を変更した場合、私は得られる観測量を変更します。 100は一度に10219個の観測値を取得し、110個は一度に観測値が少なく、10120個の観測値しか得られません。

誰にもこの問題のトラブルシューティング方法に関する提案はありますか?他のスレッドの人々がrows_at_timeの変更を提案しているようですが、それは私にとってはうまく機能しません。

+1

テーブルの幅はどれくらいですか?非常に大きなテキストフィールドがありますか?これはメモリの割り当てに影響を与える可能性があります。いくつかの列を選択してみてください。 'sqlQuery()'(2つのラッパー)の上で 'odbcQuery()'と 'sqlGetResults()を使うことを検討してください。 * believeNRows *や* max = 0 *のようなargsで遊ぶ。クエリ呼び出しに対して 'sqlTable()'を試してみてください。 [RODBCのドキュメント](https://cran.r-project.org/web/packages/RODBC/RODBC.pdf)の18ページを参照してください。 – Parfait

+0

大きなテキストフィールドが原因でした。ありがとうございました。 – dncrwlye

答えて

0

DBIパッケージを実行してデータベースに接続するROracleパッケージを使用してテストすることで問題を解決できます。私はテストするためにOracleデータベースにアクセスする必要はありませんが、2番目のパッケージを試してみると、あなたのデータベースのインターフェイスまたは他の何かで問題があるかどうかを知ることができます。

ROracleは、Oracle自体によって維持管理されているようですので、うまくサポートされていると思います。私はDBIかなりのビットを使用してMySQL(RMySQL)とSQLite(RSQLite)データベースとインターフェイスし、非常に大きなデータセットを返す際の問題はありませんでした。

0

パフェは正しい!問題は、長い文字列を含む「コメントセクション」の列でした。その列がインポートされないと、私は期待した行をすべて得ました。

関連する問題