我一直在一整天试图解决这个问题。我有一个Access数据库,我想使用JDBC连接从R更新一些数据。如果我在Access中的SQL查询编辑器中执行它,则UPDATE查询可以完美地工作,但不能从R工作,我不知道为什么。这是我的代码:
library(devtools)
library(DBI)
library(dplyr)
library(rJava)
library(RJDBC)
setwd("mypath")
access_driver_file_name <- "Access_JDBC42.jar"
access_driver_class <- "com.hxtt.sql.access.AccessDriver"
access_data_file <- "my_database.accdb" #poner aqui el nombre de la base 1
access_jdbc_url <- paste("jdbc:access:/", getwd(), "\\", access_data_file, sep="")
access_jdbc_driver <- JDBC(driverClass=access_driver_class, classPath=paste(getwd(), "\\", access_driver_file_name, sep=""))
con <- dbConnect(access_jdbc_driver, access_jdbc_url)
dbListTables(con)#this work perfectly
dbSendUpdate(con, 'UPDATE TableName SET TableName.Field = "Casa"
WHERE (([TableName].[Field]="Oficina"));')
If I copy UPDATE TableName SET TableName.Field = "Casa" WHERE (([TableName].[Field]="Oficina")); and paste it in Access the query works, but R returns:
Error in .local(conn, statement, ...) :
execute JDBC update query failed in dbSendUpdate
JDBC ERROR: Syntax error: Stopped parse at .(id21)
Statement: UPDATE TableName SET TableName.Field = "Casa"
WHERE (([TableName].[Field]="Oficina"));
我用dbSendQuery和dbGetQuery做了同样的尝试,但总是得到同样的错误。有人能帮助我吗?先谢谢你!
我用dbSendQuery和dbGetQuery做了同样的尝试,总是得到同样的错误。
1条答案
按热度按时间nnvyjq4y1#
最后我找到了解决方案。我改变了包来连接Access。现在我使用RODBC包。首先我需要安装ODBC驱动程序到Access,然后我运行下面的代码并执行我的UPDATE查询没有问题: