2017-05-04 18 views
0

我已經使用dbConnect和RMySQL包成功連接到我公司的數據庫。但是,我很努力地在R中運行查詢並獲得令人沮喪的錯誤。查詢中,我使用日常的MySQL工作臺應用程序的工作原理,因此無奈地說,它不會在R.在這裏工作是SQL查詢的一個片段:在R中使用MySQL - 獲取錯誤試圖返回變量作爲列

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

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

這些是前幾行查詢,也查詢造成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中沒有。很令人沮喪。任何建議表示讚賞!

謝謝!

編輯 - 意識到這是試圖瞭解設置變量如何在SQL中工作的更多問題。就像我說過的,我之前沒有看到過,但第一個SELECT查詢是設置一個變量,然後第二個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

我相信你不能在單個dbSendQuery()調用中執行超過1個sql查詢,這會導致錯誤消息。

無論是單獨執行2個查詢或值分配給第二內會話變量選擇:

SELECT @theDate := '2017-05-03' AS today, .... 
相關問題