我正在使用 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