我在PostgreSQL中有一个数据库,它以DATA全部大写字母命名.当我尝试使用RPostgreSQL将R data.frame写入此数据库时,如下所示:
library(RPostgreSQL)
con <- dbConnect(PostgreSQL(), host="myhost",
user= "postgres", password="myPass", dbname="DATA")
dbWriteTable(con, "test", myDf)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error in postgresqlExecStatement(conn, statement, ...) :
RS-DBI driver: (could not Retrieve the result : ERROR: no schema has been selected to create in
)
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
但是我注意到,如果我转到Postgresql并将数据库名称更改为data(小写)然后更改脚本以调用dbname="data"它然后它就像一个魅力.
我查看了rPostgreSQL的文档,并且我看到的唯一提到的情况与字段名称区分大小写有关.
所以我的问题是:
大写的表肯定存在问题.我们认为我们现在处理:尝试引用它作为"数据",它应该通过.不带引号的表标识符都是低级的.
您的问题是将整个数据库设为大写.它也可以用于引用,甚至可以'\"DATA\"'作为dbConnect的参数.
否则,列表中可重复的示例是最好的,幸运的是,Tomoaki会找到解决问题的方法.
哦,我们把它拼成一个包:RPostgreSQL和资本arrrrrrr,特别是今天的谈话就像是一个piRate日.
编辑: 看起来Ubuntu 11.04上的当前版本没有问题:
首先,创造 DATA
edd@max:~$ createdb DATA
edd@max:~$ psql DATA
psql (8.4.8)
Type "help" for help.
DATA=# \q
edd@max:~$
Run Code Online (Sandbox Code Playgroud)
其次,在R中,连接并保存一些数据:
R> library(RPostgreSQL)
R> con <- dbConnect(PostgreSQL(), host="localhost", user= "edd",
+ password=".....", dbname="DATA")
R> con
<PostgreSQLConnection:(21936,0)>
R> dbWriteTable(con, "quicktest", cars)
[1] TRUE
R>
Run Code Online (Sandbox Code Playgroud)
三,检查内容DATA:
DATA=# select * from quicktest limit 5;
row_names | speed | dist
-----------+-------+------
1 | 4 | 2
2 | 4 | 10
3 | 7 | 4
4 | 7 | 22
5 | 8 | 16
(5 rows)
DATA=#
Run Code Online (Sandbox Code Playgroud)
对我好看.
| 归档时间: |
|
| 查看次数: |
13511 次 |
| 最近记录: |