WindowsXP上のODBCを介してOracle10gデータベースからデータをプルするスクリプトがいくつかありますが、これらはかなり長い間うまく機能しています。最近、同じデータベースの別のスキーマからデータをプルするために新しいOracleアカウントを設定しましたが、そのアカウントと別のスキーマを使用してテストすると、奇妙な結果が得られ、(確実に)Rを完全に強制終了することがあります。
odbcConnectを使用してデータベースに接続し、believeNRowsとrows_at_timeを試しましたが違いはありません
>imcon<-odbcConnect(sid, uid=uid, pwd=pwd, believeNRows = FALSE, rows_at_time=1)
> odbcGetInfo(imcon)
DBMS_Name DBMS_Ver Driver_ODBC_Ver Data_Source_Name Driver_Name Driver_Ver ODBC_Ver Server_Name
"Oracle" "10.02.0030" "03.51" "SID" "SQORA32.DLL" "09.02.0000" "03.52.0000" "SID"
次に、いくつかのクエリを試してみます(できる限り簡単です。これは、ゼロ行を返します(このテーブルには2つの行があります)。ほとんどの列名は、Anの代わりに使用されます。
> sqlQuery(imcon, "select * from SCHEMA.USERS;")
[1] PASSWORD USER_DISABLED USE_DOMAIN_AUTHENTICATION ID DESCRIPTION
[6] ADMIN_USER A A.1 A.2 A.3
[11] A.4 A.5 A.6 A.7 A.8
[16] A.9 A.10 A.11 A.12 A.13
[21] A.14 A.15 A.16 A.17 A.18
[26] A.19 A.20 A.21 A.22 A.23
[31] A.24 A.25 A.26 A.27 A.28
[36] A.29 A.30 A.31 A.32 A.33
<0 rows> (or 0-length row.names)
Warning messages:
1: In deparse(., width.cutoff = max(20, width - 10)) :
invalid 'cutoff' for deparse, using default
2: In deparse(., width.cutoff = max(20, width - 10)) :
invalid 'cutoff' for deparse, using default
これは機能しますが、ゼロ行を返し、2つの日付列はLとL.1に切り捨てられます
> sqlQuery(imcon, "select ID, DESCRIPTION, NAME, FIRST_NAME, LAST_NAME, DATE_CREATED, DATE_LAST_MODIFIED from SCHEMA.USERS;")
[1] ID DESCRIPTION NAME FIRST_NAME LAST_NAME L L.1
<0 rows> (or 0-length row.names)
これは正常に機能し、データを返します
> sqlQuery(imcon, "select ID, DESCRIPTION, NAME, FIRST_NAME, LAST_NAME, ADMIN_USER from SCHEMA.USERS;")
ID DESCRIPTION NAME FIRST_NAME LAST_NAME ADMIN_USER
1 1 <NA> SYSTEM <NA> NA TRUE
2 2 Admin user ADMIN Admin NA TRUE
これはRを殺すようです(正直に言って)
> sqlQuery(imcon, "select ID, DESCRIPTION, NAME, FIRST_NAME, LAST_NAME, DATE_CREATED from SCHEMA.USERS;")
Rが死ぬ。(StatEtとRGuiの両方で)
だから私の質問;
a)何が悪いのか誰か知っていますか?
b)誰かが私が診断するために取ることができる他のステップを知っていますか?