rsqlite query where field [duplicate]のユーザー指定変数を使用してクエリ

StackOverflow https://stackoverflow.com/questions/3449666

  •  27-09-2019
  •  | 
  •  

質問

この質問にはすでに答えがあります:

私はを使用しています RSQLite Rのライブラリは、RAMには大きすぎるデータセットを管理します。回帰ごとに、データベースをクエリして、一度に会計年度を取得します。今、私は財政年をハードコーディングしています:

data.annual <- dbGetQuery(db, "SELECT * FROM annual WHERE fyear==2008")

会計年度(上記の2008年)を作って、変更を少し簡単にしたい(そして愚かな)。変数をSQLクエリ文字列に渡すことができる方法はありますか?使いたい:

fiscal.year <- 2008
data.annual <- dbGetQuery(db, "SELECT * FROM annual WHERE fyear==fiscal.year")
役に立ちましたか?

解決

sqliteはクエリのために渡された文字列のみを見るので、あなたがすることは

  sqlcmd <- paste("SELECT * FROM annual WHERE fiscal=", fiscal.year, sep="")
  data.annual <- dbGetQuery(db, sqlcmd)

良いことは、これを通常の方法で使用できることです。ラムの制限があることを忘れて、概念的にできる

  years <- seq(2000,2010)
  data <- lapply(years, function(y) {
     dbGetQuery(db, paste("SELECT * FROM annual WHERE fiscal=", y, sep="")
  }

そして今、データはすべての年間データセットを含むリストです。または、データを保持し、回帰を実行し、概要オブジェクトのみを保存することもできます。

他のヒント

ダークの答えはスポットです。私がやろうとしていることの1つは、簡単なテストのためにフォーマットを変更することです。 SQLテキストをカットしてSQLエディターに何度も貼り付けなければならないようです。だから私は次のようにフォーマットします:

sqlcmd <- paste("
   SELECT * 
   FROM annual 
   WHERE fiscal=
 ", fiscal.year, sep="")
data.annual <- dbGetQuery(db, sqlcmd)

これにより、DBクエリ環境でのテストのためにSQLビットのイン/アウトを簡単に貼り付けて貼り付けます。短いクエリについては大したことはありませんが、より長いSQL文字列で面倒にすることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top