2
我想以更新如下方式使用RODBC全局臨時表:R和MSSQL - 用臨時表通信(通道未發現表)
library(RODBC)
channel <- odbcConnect("RDataSource", uid = "user", pwd = "password")
query <- "select * from ##TempTable"
table_data <- sqlQuery(channel, query)
# data frame creation
sqlUpdate(channel, data_frame, index = "id", verbose = TRUE, tablename = "##TempTable")
選擇查詢執行良好,但SQLUPDATE失敗錯誤信息: 「odbcTableExists(channel,tablename)中的錯誤:'## TempTable':表未在通道上找到表」
我想這個錯誤的原因可能與使用'#'臨時表的名稱。
UPD:我得到了與sqlSave函數相同的錯誤。這個錯誤僅在創建臨時表時纔會發生,對於通常的SQL表,一切正常。 在調用R代碼之前創建全局臨時表。
那麼,有沒有什麼辦法使用R函數(如sqlSave()和sqlUpdate())與MSSQL數據庫中的臨時表進行通信?
它可能是字符拋出它,它也可能是想要一個模式名稱。我會將schema =「」添加到您的命令中,看看是否有幫助。你也可以嘗試改變表的名稱,以更友好的SQL;) –
ike
在SQL Server中,雙哈希前綴表名稱是[全局臨時表](http://stackoverflow.com/a/21011451/1422451)在任何*用戶的連接期間創建,並在所有**用戶斷開連接時刪除。在併發實例期間運行R代碼之前,您或任何用戶是否創建了這個'## TempTable'? – Parfait
是的,在我的情況下,全局臨時表是在調用R腳本執行之前創建的。另外,我可以通過調用sqlQuery()函數來更新此表,但sqlUpdate()或sqlSave()函數無法執行。 – floyd