この問題の最下部まで行き過ぎると、私は後世の答えを記録したいと思います。実際にはdbReadTable
ではスキーマを持つ必要はありませんが、テーブル名を大文字にするのはです。つまり、コールは
dbReadQuery(con, "TABLE_NAME")
である必要があります。 dbReadTable
がselect * from table
呼び出しでdbGetQuery
異なる方法を見つけるために
は、私はソースのために掘っ:
> showMethods("dbReadTable")
Function: dbReadTable (package DBI)
conn="OraConnection", name="character"
だから、S4方法です。我々は、上記の署名でgetMethod
を使用:
> getMethod("dbReadTable", signature = c(conn = "OraConnection", name = "character"))
Method Definition:
function (conn, name, ...)
{
.local <- function (conn, name, schema = NULL, row.names = NULL,
...)
.oci.ReadTable(conn, name, schema = schema, row.names = row.names)
.local(conn, name, ...)
}
<environment: namespace:ROracle>
.oci.ReadTable
はROracleのソースに、here見出すことができます。引数の有効性を確認し、dbGetQuery
を呼び出して行名を設定するだけです。 (dbGetQuery
を呼び出す)関連する部分はここにある:スキーマが指定されていない場合、テーブル名をせずに使用されていることを
# form name
if (is.null(schema))
tab <- sprintf('"%s"', name)
else
tab <- sprintf('"%s"."%s"', schema, name)
# read table
qry <- paste('select *',
'from', tab)
res <- .oci.GetQuery(con, qry)
注「スキーマ。」接頭辞。ただし、sprintf
はテーブル名の引用符付き文字列を生成し、quoted table names are case sensitive! (dbGetQuery
はただ小文字することができます引用符で囲まれていないテーブル名を渡します。)dbGetQuery(con, "select count(*) from table_name")
作品は、同じようdbReadQuery(con, "TABLE_NAME")
しかしdbReadQuery(con, "table_name")
がない理由
は、だからです。
実際には、スキーマは必要ないと分かりましたが、テーブル名は大文字で 'dbReadTable'(ただし' dbGetQuery'ではなく)でなければなりません。下の私の答えを見てください。 –