web-dev-qa-db-ja.com

RODBCエラー:mysqlでSQLExecDirectを実行できませんでした

Impalaデータベースにクエリを実行するRスクリプトを作成しようとしています。データベースへのクエリは次のとおりです。

select columnA, max(columnB) from databaseA.tableA where columnC in (select distinct(columnC) from databaseB.tableB ) group by columnA order by columnA 

このクエリを手動で実行すると(読み取り:impala-Shellを介してRscriptの外部)、テーブルの内容を取得できます。ただし、同じことをRスクリプトで実行しようとすると、次のエラーが発生します。

[1] "HY000 140 [Cloudera][ImpalaODBC] (140) Unsupported query."       
[2] "[RODBC] ERROR: Could not SQLExecDirect 'select columnA, max(columnB) from databaseA.tableA where columnC in (select distinct(columnC) from databaseB.tableB ) group by columnA order by columnA'
closing unused RODBC handle 1

R経由で試行したときにクエリが失敗するのはなぜですか?どうすればこれを修正できますか?前もって感謝します :)

編集1:

接続スクリプトは次のようになります。

library("RODBC");
connection <- odbcConnect("Impala");
query <- "select columnA, max(columnB) from databaseA.tableA where columnC in (select distinct(columnC) from databaseB.tableB ) group by columnA order by columnA";
data <- sqlQuery(connection,query);
10
Gowtham Ganesh

関連するドライバをインストールする必要があります。以下をご覧ください リンク

同じ問題が発生しました。必要なのは、ODBCドライバーを更新することだけでした。

また、ユーザー名とパスワードでodbcConnectを更新できる場合

connection <- odbcConnect("Impala");

connection <- odbcConnect("Impala", uid="root", pwd="password")
1
R4nc1d

これは、SQLクエリ自体のエラーが原因である可能性もあります。たとえば、次の一般化されたステートメントで「in」を見逃したときに、このエラーが発生しました。例:

stringstuff <- someDT$columnyouwanttouse

somestring <- toString(sprintf("'%s'", stringstuff)) 

RESULTS <- sqlQuery(con,  paste0("select

                        fling as flam

                        and toot **in** (",somestring,")

                        limit 30
                        ;"))

'in'を省略したときにエラーが発生したので、構文を再確認してください。

0
SqueakyBeak