我已經使用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 ...仍然令人沮喪
您可以執行dbsendquery()函數2條SQL語句? – Shadow
我無法回答你的問題,但查看RODBC軟件包[https://cran.r-project.org/web/packages/RODBC/index.html],也許這可以解決你的問題。當我試圖收到我的查詢結果時,我也遇到了一個問題,並且我設法僅提取數據幀。但是當數據框有點大時,並不是所有的行都被加載到R.但是這個打包解決了我的問題,直到現在,在MySQL Workbench中運行的每個查詢也都在R – sanyi14ka