sqlQuery
提交一个SQL查询到ODBC数据库,并尝试检索结果
查询SQL数据库时
下列R-脚本工作
x = "'2013-12-19'"
sqlQuery(channel,paste("USE [JWFX]
DELETE FROM Currency$
WHERE [Date] = ",x,";
DELETE FROM MktIndex$
WHERE [Date] = ",x))
虽然下列R- scritp,其查询正确适用于SQL中的R调用时服务器不工作:
sqlQuery(channel,
"USE [JWFX] GO
EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1 GO
EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1 GO
INSERT INTO Currency$
SELECT * FROM
OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database= C:/Users/admin/Dropbox/SQL Server/DatabaseInput/BBGdata.xlsx;','SELECT * FROM [Currency$] WHERE Date = 41627');")
,并返回以下错误:
[1] "42000 102 [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near 'GO'."
[2] "42000 102 [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near 'GO'."
[3] "[RODBC] ERROR: Could not SQLExecDirect 'USE [JWFX] GO\nEXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1 GO\nEXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1 GO\nINSERT INTO Currency$\nSELECT * FROM \nOPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database= C:/Users/admin/Dropbox/SQL Server/DatabaseInput/BBGdata.xlsx;','SELECT * FROM [Currency$] WHERE Date = 41627');'"
为什么会发生这种情况?任何提示?
RODBC不太可能支持复杂的东西一样那。我只会依赖基础知识。 – joran
@joran:我怀疑这与R有什么关系。它可能是SQL Server和/或Excel ODBC驱动程序的限制。 –
这就是我的意思,但我不清楚RODBC和驱动程序本身之间的区别。 – joran