はR

2017-02-24 13 views
1

質問のSQLクエリーに適用するか、またはループのために(2010年〜2016年)はR

入手方法 table.2011 = 2011年のデータ(ID、名前、日付、製品) table.2012 = data fまたは2012年(ID、名前、日付、製品) など...毎年。

+0

どのような種類のデータベースを使用していますか? (これは、すべてのデータベースがDBIで異なるので、パラメータ化されたクエリを行う方法を駆動します。) "data.framesのリスト"に関連するSOに関する質問はたくさんありますが、dbGetQueryはデータを返す必要があるため、ここでは非常に適切です。フレームでは、方法は同じになります。 (これは、 'table.2011'と' table.2012'を持っている代わりに、データのフレームのリストに行くという強い示唆です。) – r2evans

+0

okこの質問のdata.framesのリストを取得する方法。 SQL Db、JDBC – Pb89

+0

'sapply(2010:2016、function(i)dbGetQuery(conn、" ... "))'によって接続されています。値をクエリ文字列に直接挿入するのではなく、[パラメータ化クエリ](http://stackoverflow.com/questions/4712037/what-is-parameterized-query)を使用する必要があります。残念なことに、*すべてのデータベースはそれを異なる方法で行います。 RPostgresは '$ 1'を使い、' RSQLite'は ':varname'を使い、' RSQLServer'は '?1'などを使います。*" SQL Db "*は何もしません。 * "どのようなタイプのデータベースを使用していますか?" *(続き...) – r2evans

答えて

-1
year <- factor(c(2010,2011,2012,2013,2014,2015,2016)) 

for(i in levels(year)) 

{ 

assign(paste0('table.',i),dbgetQuery(conn, paste("SELECT ID , Name , Date , Product FROM table xyz where Year = '",i,"';"))) 

}