RJDBC: R to Oracle不能删除或删除表



我使用RJDBC连接到本地数据库。这允许我使用dbGetQuery轻松地进行SELECT查询,使用dbWriteTable轻松地进行CREATE TABLE查询。

然而,我不能找出一个方法来DROP TABLE或DELETE或SELECT INTO直接从我的R控制台。当我直接在SQL Developer中执行这些操作时,这些事情就会起作用,但当我将查询从r传递到数据库时就不会了。

如何使用R执行非SELECT语句的数据库记录操作?

我会尝试使用不同的类型。dbGetQuery基于查找和迭代DB,而不是操纵它的记录。以前也有人问过类似的问题;我找不到一个很好的R示例,但如果它有帮助,可以在这里找到一个很好的java示例:

编辑:

我找到了我说的类型!花了我一段时间,无论如何- sqlQuery允许您运行几乎任何查询,即-更改DB记录。我从这个源代码修改的例子:

res <- sqlQuery(con1,"DELETE TABLE TESTDATA", errors=FALSE) 
# res will now hold the result of the query.
# -1 means error, otherwise iteration is sucessful, and it will hold the number of rows affected.
if (res == -1){ #if something messed up
 cat ("An error has occurred.n")
 msg <- odbcGetErrMsg(con1) #Use your connection for this.
 print (msg)
} else {
  cat ("Table was deleted successfully.n")
}

编辑2 :

我把它与RODBC混淆了,但是没有理由担心,因为我也找到了RJDBC的替代方案!它叫做dbSendUpdate。例子:

# Assuming you have the connection saved as conn; these example shows how to use dbSendUpdate to create tables and insert values.
# You could use it with every non-selective query, that is, which manipulates the record (update,delete,insert,drop etc.)
# create table, with dbSendUpdate:
dbSendUpdate(conn, "CREATE TABLE foo(a INT,b VARCHAR(100))")
# insert value, bind parameters to placeholders in statement:
dbSendUpdate(conn, "INSERT INTO foo VALUES(?,?)", 42, "bar")
# feel free to modify the query itself, these are just example values.

这与这里的另一个回答问题相似

基本上,顾名思义,dbGetQuery()用于发送查询和接收查询结果。

如果你想发送一般语句到数据库,如'drop table'等。你可以使用:

dbSendUpdate(connection_object, "drop table table_name")

相关内容

  • 没有找到相关文章

最新更新