0

RPostgreSQL および sqldf パッケージを使用して SQL を実行しています。

繋がり:

drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, dbname="dbname",host="host",port=5432,user="usr",password="pwd")

次に、かなり複雑な SQL ステートメントを作成し、最後に (vSQLは SQL 選択ステートメント) を作成します。

vSQLDF <- sqldf(vSQL, connection=con)

次のエラーが表示されます。

Error in dbPreExists && !overwrite : invalid 'x' type in 'x && y'

再現可能な例を作成できませんでした。言えることは次のとおりです。

  1. 生成された SQL ステートメントは、データベースで直接実行すると機能します (文字列を R から pgAdmin にコピーしました)。
  2. 接続は機能し、使用できますsqldf("select * from any_table, connection=con")
  3. スクリプトに異なる入力パラメーターを使用して短い SQL を生成すると機能します
  4. SQL の長さだけが問題ではありません。試してみました: inSQL = paste(rep("select 1::int ",10000),collapse=" union all ")、別のエラーになります:RS-DBI driver: (could not Retrieve the result : ERROR: stack depth limit exceeded
  5. SQL ステートメントに奇妙な文字はありません

このエラーが何を意味するのか分かりますか?

セッション情報:

> sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=cs_CZ.UTF-8       LC_NUMERIC=C               LC_TIME=en_GB.UTF-8        LC_COLLATE=cs_CZ.UTF-8     LC_MONETARY=en_GB.UTF-8   
 [6] LC_MESSAGES=en_US.UTF-8    LC_PAPER=C                 LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] tcltk     stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] lattice_0.20-13       sqldf_0.4-6.4         RSQLite.extfuns_0.0.1 RSQLite_0.11.2        chron_2.3-43          gsubfn_0.6-5         
 [7] proto_0.3-10          RPostgreSQL_0.3-3     DBI_0.2-5            

loaded via a namespace (and not attached):
[1] grid_2.15.2  tools_2.15.2

PostgreSQL:

PostgreSQL 9.1.9 on x86_64-unknown-linux-gnu, compiled by gcc-4.4.real (Debian 4.4.5-8) 4.4.5, 64-bit

RStudio 0.97.332

4

2 に答える 2