2011-09-19 10 views
7

PostgreSQLにデータベースがあり、その名前はすべてDATAです。私は、私は、PostgreSQLに行くとあれば変更することがわかりしかしデータベース名がすべて大文字である場合、rPostgreSQLを使用してPostgresqlにテーブルを書き込む

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

:私は次のエラーを取得する

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

:私はそうのようなRPostgreSQLを使用して、このデータベースへのR data.frameを書くしようとすると、データベース名をdata(小文字)に変更し、dbname="data"を呼び出すようにスクリプトを変更すると、それは魅力的に機能します。

私はrPostgreSQLのドキュメントを調べましたが、大文字と小文字を区別するフィールド名を使用した場合の唯一の例がありました。

だから私の質問は以下のとおりです。

  1. は、この動作が予想されますか?
  2. 私の状況で私はDBを制御するので、自由にデータベースの名前を変更できます。データベースの名前をすべて小文字に変更できない場合、この現象を回避するにはどうすればよいですか?

答えて

6

テーブルでは明らかに問題がありました。は大文字です。私たちは今それを扱っていると思う: "DATA"として引用してみてください。引用符で囲まれていないテーブル識別子はすべて小文字になります。

問題がデータベース全体を大文字にしています。また、dbConnectの引数として'\"DATA\"'を指定して引用符を使用することもできます。

それ以外の場合は、リストの再現可能な例が最適であり、運が良ければ、相撲は問題の修正を見つけるでしょう。

ああ、私たちはパッケージのようにそれを綴っています:RPostgreSQL with capital arrrrrrr、今日は特にpiRateのような話です。

編集:、第二、およびRにDATA

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

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

を作成し、

まずいくつかのデータを接続して、保存します:は、Ubuntuの11.04の現在のバージョンと何の問題は、単に存在しないように見える

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> 

第3に、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=# 

私によく似ています。

+0

'\ "データ\"'は有望です。私はちょっとテストします。超高速応答のためにいつものように、ありがとう。 –

+0

私はMac OS 10.7で構築したrPostgreSQLのバージョンを実行しています。以前のバージョンを構築した可能性があります。私は最新のソースとテストから構築します。 –

+0

@ Dirk Eddelbuettel:dbwriteテーブルは非常に明確です。私はテーブル(データベース)にデータフレームを挿入することに関する小さな質問があります。私は "bank1"という名前のテーブルを持っており、すでにいくつかのデータが入っています。私は同じデータ(列と列名の同様の番号)を含む名前 "df1"とRのデータフレームを持っています。今私はbank1をdf1で更新したいと思う。どうすればいいのか教えてください。 – Chanti