Hatena::ブログ(Diary)

盆栽日記

2014-04-18

nochangeでお願いします

sqlFetchを使う際、大文字で指定したテーブル名が勝手に小文字に変換される。

sqlFetchの引数を見てもそんな指定はない。

困ったと思いヘルプをつらつら見ているとodbcConnectにそのような指定があることに気づいた。

とりいそぎcase="nochange"に指定した次第。

以下odbcConnectのヘルプより抜粋

For DBMSs that translate table and column names case must be set appropriately. Allowable

values are "nochange", "toupper" and "tolower" as well as the names of databases where the

behaviour is known to us (currently "mysql", which maps to lower case on Windows but not on

Linux, "postgresql" (lower), and "msaccess" (nochange)). If case is not specified, the default is

"nochange" unless the appropriate value can be figured out from the DBMS name reported by the

ODBC driver. It is likely that "toupper" is desirable on IBM’s DB2, but this is not enforced.

しかしこんな引数いつ入ったんだ。

require(RODBC)
con <- odbcConnect(dsn="hoge", case="nochange")
res <- sqlFetch(con, "HOGETABLE", max=MAX)
close(con)

2013-01-22

sqlSaveのエラー

sqlSaveを使って下記のようなエラーが出た。

以下にエラー odbcUpdate(channel, query, mydata, coldata[m, ], test = test, :

missing columns in 'data'

これ、sqlSave内で呼び出されるodbcUpdateの中で下記のようなフィールド名チェックを行って、整合が取れなかった時に出るようで。

ds <- match(params[[1]], cnames)

ということで、このエラーが出た時は挿入しようとしているデータのフィールド名をチェックすること。