R连接到dbExistsTable中的postgres return false,但是错误
R connect to postgres return false in dbExistsTable, but it is wrong
我尝试在 postgres 中连接到我的 table。
这是我的数据库的屏幕。
所以我需要 dbo.social 和 table 配置文件。
所以要做到这一点,我尝试
library(RPostgres)
library(DBI)
pw<- {
"1234"
}
con <- dbConnect(RPostgres::Postgres()
, host='1.2.3.4.'
, port='5432'
, dbname='social'
, user='analyst'
, password=pw)
#rm(pw) # removes the password
dbExistsTable(con, "social")
和结果
[1] FALSE
为什么是假的,我用黑线标记它存在。
所以
> dbListTables(con)
[1] "cache" "available_permission_modules"
[3] "available_permissions" "counters"
[5] "permissions" "group_direction"
[7] "jobs" "oauth_auth_codes"
[9] "oauth_access_tokens" "oauth_refresh_tokens"
[11] "permissions_rules" "permissions_rule_user"
[13] "oauth_clients" "oauth_personal_access_clients"
[15] "users" "directions"
[17] "themes" "profiles_without_rating"
[19] "failed_jobs" "model_has_permissions"
[21] "regions_oktmo" "ch_profiles"
[23] "user_reports" "roles"
[25] "migrations" "crime_minor"
[27] "governments" "mapping_candidates"
[29] "password_resets" "responsible"
[31] "spatial_ref_sys" "model_has_roles"
[33] "population" "role_has_permissions"
[35] "geo_point" "geo_polygon"
[37] "crime_all" "geography_columns"
[39] "geometry_columns" "raster_columns"
[41] "raster_overviews" "schools"
[43] "post_grabber"
为什么列表里没有social.profiles_bstms?
我怎样才能让 social.profiles_bstms tables 使用它。
正如 AEF 和 Data Miner 的直接回复中提到的,您要做的是验证架构 social
中的 table profile_bstms
是否存在(以及此架构位于同名数据库中。
请注意 Postgres Schemas [ref.1] 本身不包含数据;它们用于整理您的 tables。
我以前从未使用过 R,但我发现了一些可以带来一些启发的链接。
关于你为什么 dbListTables(con)
不显示那些 tables 的问题:我会说你正在观察的列表来自 tables,它们出现在模式 public
,我说得对吗?
如果是这种情况,发生这种情况是因为参数 search_path
不包含您要列出的架构,在本例中为 social
.
我的建议是请您尝试更改 search_path
参数。类似于:"$user", public, social
。它不需要重新启动数据库。
[1] https://www.postgresql.org/docs/current/ddl-schemas.html
无需设置search_path
dbExistsTable(con, Id(schema = "social", table="profile_bstms"))
您还可以使用 dbListObjects(con)
查看所有架构
然后dbListObjects(con, Id(schema = "social"))
深入挖掘
我尝试在 postgres 中连接到我的 table。
这是我的数据库的屏幕。
所以我需要 dbo.social 和 table 配置文件。 所以要做到这一点,我尝试
library(RPostgres)
library(DBI)
pw<- {
"1234"
}
con <- dbConnect(RPostgres::Postgres()
, host='1.2.3.4.'
, port='5432'
, dbname='social'
, user='analyst'
, password=pw)
#rm(pw) # removes the password
dbExistsTable(con, "social")
和结果
[1] FALSE
为什么是假的,我用黑线标记它存在。
所以
> dbListTables(con)
[1] "cache" "available_permission_modules"
[3] "available_permissions" "counters"
[5] "permissions" "group_direction"
[7] "jobs" "oauth_auth_codes"
[9] "oauth_access_tokens" "oauth_refresh_tokens"
[11] "permissions_rules" "permissions_rule_user"
[13] "oauth_clients" "oauth_personal_access_clients"
[15] "users" "directions"
[17] "themes" "profiles_without_rating"
[19] "failed_jobs" "model_has_permissions"
[21] "regions_oktmo" "ch_profiles"
[23] "user_reports" "roles"
[25] "migrations" "crime_minor"
[27] "governments" "mapping_candidates"
[29] "password_resets" "responsible"
[31] "spatial_ref_sys" "model_has_roles"
[33] "population" "role_has_permissions"
[35] "geo_point" "geo_polygon"
[37] "crime_all" "geography_columns"
[39] "geometry_columns" "raster_columns"
[41] "raster_overviews" "schools"
[43] "post_grabber"
为什么列表里没有social.profiles_bstms?
我怎样才能让 social.profiles_bstms tables 使用它。
正如 AEF 和 Data Miner 的直接回复中提到的,您要做的是验证架构 social
中的 table profile_bstms
是否存在(以及此架构位于同名数据库中。
请注意 Postgres Schemas [ref.1] 本身不包含数据;它们用于整理您的 tables。
我以前从未使用过 R,但我发现了一些可以带来一些启发的链接。
关于你为什么 dbListTables(con)
不显示那些 tables 的问题:我会说你正在观察的列表来自 tables,它们出现在模式 public
,我说得对吗?
如果是这种情况,发生这种情况是因为参数 search_path
不包含您要列出的架构,在本例中为 social
.
我的建议是请您尝试更改 search_path
参数。类似于:"$user", public, social
。它不需要重新启动数据库。
[1] https://www.postgresql.org/docs/current/ddl-schemas.html
无需设置search_path
dbExistsTable(con, Id(schema = "social", table="profile_bstms"))
您还可以使用 dbListObjects(con)
查看所有架构
然后dbListObjects(con, Id(schema = "social"))
深入挖掘