2017-05-04 10 views
0

DBConnectとRMySQLパッケージを使用して私の会社のデータベースにRで接続しましたが、Rでクエリを実行しようとしています。エラー。RでMySQLを使用するとエラーが発生しました

USE mydb; 
SELECT @theDate := '2017-05-03'; 

SELECT 
    @theDate AS today, 
    a.user_id AS user_id, 
    ... 
    ... 

これらは、最初の数行です:クエリは、したがって、それはここでR.に動作しないことにフラストレーションがSQLクエリの抜粋ですが、私が日々使用のMySQL Workbenchのアプリで動作しますクエリ、そしてまた、私は次のエラーが表示さR.でエラーの原因となったクエリの一部:私はより再現性のコードを提供することはできません

my_query = " USE mydb; 
SELECT @theDate := '2017-05-03'; 

SELECT 
    @theDate AS today, 
    a.user_id AS user_id, 
    ... 
    ... " 

my_db = dbConnect(MySQL(), ...) 
requested_query = dbSendQuery(my_db, my_query) 

Error in .local(conn, statement, ...) : 
    could not run statement: You have an error in your SQL syntax; check the manual that 
    corresponds to your MySQL server version for the right syntax to use 
    near 'SELECT 
      @theDate AS today, 
      a.user_id AS user_id,' at line 3 

申し訳ありませんが、「それは、会社のデータベースに接続する伴うだろうと私ができますデータベース情報を共有しないでください。

最後のコメント - 私はこの行がSELECT @theDate :: = '2017-05-03'と関係していると信じています。ライン。このクエリは私の同僚ではなく私の同僚によって書かれたもので、前にクエリでこのように使用されていた2つのselect文を見たことがありませんでした。 MySQL Workbenchアプリケーションでは、@theDateは本質的に '2017-05-03'に設定された変数です。クエリによって返されるテーブルの最初の列はすべて '2017-05-03'です。

私が言ったように、クエリはMySQL Workbenchでは動作しますが、Rでは動作しません。どんな提案も感謝しています!

ありがとうございます!

EDIT - これは、SQLで設定変数がどのように機能するかを理解しようとすると、さらに問題になることを認識しています。私が言ったように私は前にこれを見ていないが、最初のSELECTクエリは変数を設定しているし、2番目のSELECTクエリはその変数を使用しています。これは許可されていますか?私はなぜそれがMYSQLのワークベンチで許可されているが、Rではないのだろうか...まだ不満です

+0

あなたは()関数dbsendqueryで2つのSQL文を実行することはできますか? – Shadow

+0

私はあなたの質問に答えることができませんが、RODBCパッケージ[https://cran.r-project.org/web/packages/RODBC/index.html]をチェックしてください。これはあなたの問題を解決するかもしれません。クエリの結果を受け取ろうとすると問題が発生し、データフレームだけを取得できました。しかし、データフレームが少し大きかったら、すべての行がRにロードされたわけではありません。しかし、このパッケージは私の問題を解決しました。今までMySQL Workbenchで実行されるすべてのクエリはR – sanyi14ka

答えて

1

私は単一の呼び出しで1つ以上のSQLクエリを実行できないと考えています。

のどちらかを選択し、別々に2つのクエリを実行するか、第二内のセッション変数に値を代入:

SELECT @theDate := '2017-05-03' AS today, .... 
関連する問題