相关疑难解决方法(0)

在R DBI中绑定变量

在R的DBI包中,我找不到使用绑定变量的工具.我没有找到一个文件(2002年从原来的小插曲),说约绑定变量,"也许DBI可能在未来的某个时候实现这个功能",但它看起来像迄今剩下的百废待兴.

R中的人用什么代替?只是将字符串连接到SQL中?这对安全性和性能有一些明显的问题.

编辑:

以下是占位符如何工作的示例:

query <- "SELECT numlegs FROM animals WHERE color=?"
result <- dbGetQuery(caseinfo, query, bind="green")
Run Code Online (Sandbox Code Playgroud)

这不是一个很好的深思熟虑的界面,但这个想法是,你可以使用一个值bind和驱动程序处理逃脱的细节(如果底层API不处理绑定变量本身),而不必重新实现它的调用者[严重].

database r

10
推荐指数
1
解决办法
4637
查看次数

使用RODBC进行参数化查询

我在R中有一个变量,我想传递给数据库.在阅读谷歌搜索结果时,我可以使用paste许多建议,但由于SQL注入漏洞,这是不安全的.我更喜欢这样的东西:

x <- 42
sqlQuery(db, 'SELECT Id, Name FROM People WHERE Age > ?;', bind=c(x))
Run Code Online (Sandbox Code Playgroud)

是否可以使用RODBC参数化查询?如果没有,是否有支持它们的替代库?

我使用的是SQL Server,RODBC 1.3-6和R 3.0.0.

sql r rodbc

10
推荐指数
2
解决办法
2901
查看次数

有没有更好的方法在R中编写这个sqlQuery?

我正在编写一个R脚本来获取一些数据库数据,然后使用RODBC包来处理它.目前我所有的sqlQuery命令都是一个长字符串;

stsample<-sqlQuery(odcon, paste"select * from bob.DESIGNSAMPLE T1, bob.DESIGNSUBJECTGROUP T2, bob.DESIGNEVENT T3, bob.CONFIGSAMPLETYPES T4 WHERE T1.SUBJECTGROUPID = T2.SUBJECTGROUPID AND T1.TREATMENTEVENTID = T3.TREATMENTEVENTID AND T1.SAMPLETYPEKEY = T4.SAMPLETYPEKEY AND T1.STUDYID = T2.STUDYID AND T1.STUDYID = T3.STUDYID AND T1.STUDYID = ", chstudid, sep=""))
head(stsample)
Run Code Online (Sandbox Code Playgroud)

看起来很难看,很难阅读/更新.我已经尝试过将它们设置为多线,但是新的线条字符会受到阻碍,目前我最好的是使用大量的粘贴;

stsample<-sqlQuery(odcon,
    paste(
        "select ",
            "* ", 
        "from ", 
            "BOB.DESIGNSAMPLE T1, ",
            "BOB.DESIGNSUBJECTGROUP T2, ",
            "BOB.DESIGNEVENT T3, ",
            "BOB.CONFIGSAMPLETYPES T4 ",
        "WHERE ",
            "T1.SUBJECTGROUPID = T2.SUBJECTGROUPID ",
            "AND T1.TREATMENTEVENTID = T3.TREATMENTEVENTID ",
            "AND T1.SAMPLETYPEKEY = T4.SAMPLETYPEKEY ",
            "AND T1.STUDYID = …
Run Code Online (Sandbox Code Playgroud)

sql formatting r rodbc

4
推荐指数
1
解决办法
8904
查看次数

如何在SQL语句中使用变量名?

我正在使用R来调用mySQL语句,我在语句之外定义变量,例如

foo = 23;
dbGetQuery(con, "select surname from names WHERE age = '.foo.' ;")
Run Code Online (Sandbox Code Playgroud)

但这会返回一个空集,我用Google搜索并尝试'.&foo.' "包含.foo".'.&& foo."'以及许多不同的组合,但它们都不起作用,我认为这应该是一个mysql问题,而不是我遇到的R特定问题,但不确定.通常变量有$值但不在R.

mysql variables r

2
推荐指数
1
解决办法
3494
查看次数

标签 统计

r ×4

rodbc ×2

sql ×2

database ×1

formatting ×1

mysql ×1

variables ×1