2011-09-19 10 views
7

मेरे पास PostgreSQL में डेटाबेस है जिसे सभी कैप्स में DATA नाम दिया गया है।rgostgreSQL का उपयोग करते हुए पोस्टग्रेस्क्ल में लेखन तालिकाएं जब डेटाबेस नाम सभी पूंजी अक्षरों

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

मैं निम्नलिखित त्रुटि मिलती है:

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

हालांकि मैं नोटिस कि अगर मैं Postgresql के पास जाकर बदल जब मैं तो जैसे RPostgreSQL का उपयोग कर इस डेटाबेस के लिए एक अनुसंधान data.frame लिखने की कोशिश डेटाबेस नाम data (निचला मामला) और फिर स्क्रिप्ट को dbname="data" पर कॉल करने के लिए बदलें, फिर यह एक आकर्षण की तरह काम करता है।

मैंने rPostgreSQL के लिए प्रलेखन को देखा और केवल मामला का उल्लेख उल्लेख किया कि मुझे फ़ील्ड नामों को केस संवेदनशील होने के साथ करना था।

तो मेरी प्रश्न हैं:

  1. है इस व्यवहार की उम्मीद है?
  2. मेरी स्थिति में मैं डीबी को नियंत्रित करता हूं ताकि मैं इच्छानुसार डेटाबेस का नाम बदल सकूं। अगर मैं डेटाबेस को सभी निचले मामले में पुनर्नामित नहीं कर सका तो मैं इस व्यवहार के आसपास कैसे काम करूंगा?

उत्तर

6

वहाँ निश्चित रूप से टेबल अपर-केस में साथ मुद्दे थे। लगता है कि हम अब इसे संभालते हैं: इसे "डेटा" के रूप में उद्धृत करने का प्रयास करें और इसे पार करना चाहिए। निर्विवाद तालिका पहचानकर्ता सभी को कम-चरण प्राप्त होता है।

आपकी समस्या में संपूर्ण डेटाबेस को अपरकेस में रखना है। यह डीबीकनेक्ट के लिए तर्क के रूप में भी '\"DATA\"' के साथ उद्धरण के साथ काम कर सकता है।

अन्यथा, सूची में पुन: उत्पन्न उदाहरण सर्वोत्तम हैं, और कुछ भाग्य के साथ, तोमोकी को आपकी समस्या का समाधान मिलेगा।

ओह, और हम इसे पैकेज की तरह वर्तनी करते हैं: राजधानी arrrrrrr के साथ RPostgreSQL, विशेष रूप से आज एक पाइरेट दिन की तरह बात करते हैं।

संपादित करें: लग रहा है जैसे उबंटू 11.04 पर वर्तमान संस्करण के साथ बस कोई समस्या नहीं:

पहले, बनाने DATA

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

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

दूसरा, और अनुसंधान में, कनेक्ट और कुछ डेटा को बचाने:

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> 

तीसरा, 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

मैं rPostgreSQL का एक संस्करण चला रहा हूं जिसे मैंने मैक ओएस 10.7 पर बनाया था। यह संभव है कि मैंने पिछले संस्करण का निर्माण किया। मैं नवीनतम स्रोत और परीक्षण से निर्माण करूंगा। –

+0

@ Dirk Eddelbuettel: dbwrite तालिका बहुत स्पष्ट है धन्यवाद। मेरे पास तालिका (डेटाबेस) में डेटाफ्रेम डालने के संबंध में एक छोटा सा प्रश्न है। मेरे पास "bank1" नाम वाली एक तालिका है और इसमें पहले से ही कुछ डेटा है।मेरे पास आर में डेटाफ्रेम है जिसका नाम "डीएफ 1" है जिसमें एक ही डेटा है (कॉलम और कॉलम नामों के समान नहीं)। अब मैं बैंक 1 को डीएफ 1 के साथ अपडेट करना चाहता हूं। क्या आप कृपया मुझे बता सकते हैं कि मैं इसे कैसे कर सकता हूं – Chanti

संबंधित मुद्दे