2011-09-19 10 views
7

Tengo una base de datos en PostgreSQL que se llama DATA en mayúsculas. Cuando trato de escribir un hoja.de.datos R a esta base de datos utilizando RPostgreSQL así:escribiendo tablas a Postgresql usando rPostgreSQL cuando el nombre de la base de datos es todas letras mayúsculas

library(RPostgreSQL) 
con <- dbConnect(PostgreSQL(), host="myhost", 
       user= "postgres", password="myPass", dbname="DATA") 
dbWriteTable(con, "test", myDf) 

me sale el siguiente error:

Error in postgresqlExecStatement(conn, statement, ...) : 
    RS-DBI driver: (could not Retrieve the result : ERROR: no schema has been selected to create in 
) 
[1] FALSE 

Sin embargo, me di cuenta que si voy a PostgreSQL y cambiar el nombre de la base de datos al data (minúscula) y luego cambie la secuencia de comandos para llamar al dbname="data" y luego funciona como un amuleto.

Revisé la documentación de rPostgreSQL y la única mención del caso que vi tenía que ver con que los nombres de campo fueran sensibles a mayúsculas y minúsculas.

Así que mis preguntas son: ¿Se

se espera
  1. este comportamiento?
  2. En mi situación, controlo la base de datos para poder cambiar el nombre de la base de datos a voluntad. ¿Cómo solucionaría este problema si no pudiera cambiar el nombre de la base de datos a minúsculas?

Respuesta

6

Hubo definitivamente problemas con tablas en mayúsculas. En pensar que lo manejamos ahora: Intenta citarlo como "DATOS" y debería pasar. El identificador de la tabla sin comillas tiene un diseño inferior.

Su problema es tener toda la base de datos en mayúsculas. También puede funcionar con las comillas, incluso con '\"DATA\"' como argumento para dbConnect.

De lo contrario, ejemplos reproducibles en la lista son los mejores, y con un poco de suerte, Tomoaki encontrará una solución a su problema.

Ah, y lo deletreamos como el paquete: RPostgreSQL con arrrrrrr capital, especialmente hoy en día como un día piRate.

Editar: Parece que simplemente no hay problema con las versiones actuales en Ubuntu 11.04:

primer lugar, crear DATA

[email protected]:~$ createdb DATA 
[email protected]:~$ psql DATA 
psql (8.4.8) 
Type "help" for help. 

DATA=# \q 
[email protected]:~$ 

En segundo lugar, y en R, conectar y guardar algunos datos:

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> 

En tercer lugar, verifique el contenido en 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=# 

Luces buenas para mí.

+0

'\ "DATA \"' parece prometedor. Voy a probar eso en un momento. Gracias, como siempre, por la respuesta súper rápida. –

+0

Estoy ejecutando una versión de rPostgreSQL que construí en Mac OS 10.7. Es posible que construí una versión anterior. Construiré a partir de la última fuente y prueba. –

+0

@ Dirk Eddelbuettel: la tabla dbwrite es muy clara gracias. Tengo una pequeña pregunta sobre la inserción de dataframe en una tabla (base de datos). Tengo una tabla con el nombre "bank1" y ya contiene algunos datos.Tengo un marco de datos en R con el nombre "df1" que contiene los mismos datos (número similar de columnas y nombres de columna). Ahora quiero actualizar bank1 con df1. ¿podría decirme cómo puedo hacerlo? – Chanti

Cuestiones relacionadas