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