Ошибка в postgresqlExecStatement (conn, Statement, ...): драйвер RS-DBI: (не удалось получить результат: ОШИБКА: отношение «анализ» не существует - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь подключиться к своему postgres

install.packages("RPostgreSQL")
require("RPostgreSQL")
#this completes installing packages
#now start creating connection
con<-dbConnect(dbDriver("PostgreSQL"), dbname="social", host="1.2.3.4", 
                port=5432, user="analyst",password="pass123")

dbListTables(con)

, он возвращает список всех моих таблиц. Это записи, эти таблицы в социальной базе данных

> dbListTables(con)
 [1] "cache"                  "2020_covid_volunteers"  "greq_data"             
 [4] "schools_70000"          "associations"           "topology"              
 [7] "layer"                  "schoolers"              "schools"               
[10] "opposition_likes"       "opposition_comments"    "volunteers"            
[13] "opposition_posts"       "persons"                "schoolchildrens"       
[16] "schoolchildrens_1"      "user_group_migration"   "user_group_migration2" 
[19] "vkontakte_cube"         "swamp_counters"         "tags"                  
[22] "videos"                 "profiles3"              "groups"                
[25] "photos"                 "profile_comments"       "comments"              
[28] "posts"                  "analysis"               "statistics"            
[31] "profiles"               "Cities"                 "Cube"                  
[34] "Regions"                "vk_population"          "vk_school_map"         
[37] "brand_hub_types"        "brand_messages"         "brand_theme_statistic" 
[40] "brand_regions_mapping"  "brand_cities_mapping"   "brand_theme_direction" 
[43] "brand_cities"           "vk_schools"             "positive_vk_groups"    
[46] "schoolchildren_1"       "schoolchildren"         "schoolchildren_moscow" 
[49] "model_has_permissions"  "regions_oktmo"          "users"                 
[52] "user_reports"           "permissions"            "roles"                 
[55] "migrations"             "directions"             "crime_minor"           
[58] "failed_jobs"            "governments"            "mapping_candidates"    
[61] "password_resets"        "responsible"            "schools3"              
[64] "spatial_ref_sys"        "geo_boundary_polygon"   "geo_settlement_polygon"
[67] "schools2"               "model_has_roles"        "population"            
[70] "schools"                "schools4"               "role_has_permissions"  
[73] "geo_point"              "geo_polygon"            "crime_all"             

Итак, я хочу написать запрос

DBI::dbGetQuery(con,"SELECT * from analysis")

и получить ошибку

Error in postgresqlExecStatement(conn, statement, ...) : 
  RS-DBI driver: (could not Retrieve the result : ERROR:  relation "analysis" does not exist
LINE 1: SELECT * from analysis
                      ^
)
NULL
warning:
В postgresqlQuickSQL(conn, statement, ...) :
  Could not create execute: SELECT * from analysis

эта таблица существует. Мы видим это список. Что не так и как исправить?

1 Ответ

1 голос
/ 04 мая 2020

Необходимо указать схему.

Запрос со списком всех таблиц не учитывает схему. Чтобы иметь возможность «видеть» таблицу в запросе, вам нужно либо добавить ее схему в path, либо указать схему в своем запросе.

DBI::dbGetQuery(con,"SELECT * from myschema.analysis")

Если вы не знаете имена схем, вы можете запустить

dbGetQuery(db,"SELECT table_schema, table_name FROM information_schema.tables")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...