【发布时间】:2017-07-14 20:48:38
【问题描述】:
问题-
如何使用 apply 函数或 for 循环在下面对不同的值运行此查询
运行查询
dbgetQuery(conn, " SELECT ID , Name , Date , Product
FROM table xyz
where Year = i ")
其中 i 是年(2010 年到 2016 年)
如何获得 table.2011 = 2011 年的数据(ID、姓名、日期、产品) table.2012 = 2012 年的数据(ID、姓名、日期、产品) 等等..每年。
【问题讨论】:
-
您使用的是什么类型的数据库? (这推动了如何进行参数化查询,因为 DBI 中的所有数据库都不同。)关于“data.frames 列表”的 SO 有很多问题,它们在这里非常合适:因为
dbGetQuery应该返回数据。框架,方法将是相同的。 (这是一个强烈的建议反对拥有table.2011和table.2012,而不是使用list的data.frames。) -
确定如何在这个问题中获取 data.frames 列表。 SQL 数据库,通过 JDBC 连接
-
sapply(2010:2016, function(i) dbGetQuery(conn, "..."))。您不应该将值直接插入到查询字符串中,而应该使用parameterized queries。不幸的是,所有数据库的做法都不同;RPostgres使用$1,RSQLite使用:varname,RSQLServer使用?1等。您说 "SQL Db" 对缩小范围没有任何帮助。 “您使用的是什么类型的数据库?”(续...) -
就处理 data.frames 列表而言,也许这会有所帮助:stackoverflow.com/questions/29721283/…
标签: sql r for-loop apply rodbc