簡體   English   中英

R Redshift dbExistTable dbWriteTable

[英]R Redshift dbExistTable dbWriteTable

我在使用R進行Redshift連接中使用架構時遇到問題。

url <- "jdbc:url:port/database?user=X123&password=fakepassword"
conn <- dbConnect(driver, url)

因此,我的連接很好,當我列出表時,我注意到默認架構是公共的,但是我不想使用該架構,如何切換架構?

說是否:lab_space

當我嘗試這樣做時,它仍然在公共列表中列出:

dbListTables(conn, schema='lab_space')

嘗試了這個,我得到一個錯誤:

SET search_path = lab_space;

> SET search_path = 'cust_usr';
Error: unexpected symbol in "SET search_path"

我一定做錯了什么 ?

當我嘗試說檢查表格並刪除時:

droptable <- dbSendQuery(conn, "drop table if exists lab_space.Tablebla")

它將刪除它,但仍然給我一個錯誤:

Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set for ",  : 
  Unable to retrieve JDBC result set for drop table if exists lab_space.Tablebla ([JDBC Driver]com.amazon.dsi.dataengine.impl.DSISimpleRowCountResult cannot be cast to com.amazon.dsi.dataengine.interfaces.IResultSet)

您可以使用dbSendUpdate更改架構,以更改連接的search_path

dbSendUpdate(jdbc_con,"set search_path to my_schema")

好的,在這個驅動程序上,我和這個驅動程序一起使用

drv <- dbDriver("PostgreSQL") 

然后一切正常,沒有愚蠢的警告錯誤,我想R和Redshift仍有很多工作要做,不確定:-)

在redshift中,您可以將set search_path to <schema_name> (不等於)來設置搜索路徑dbSendQuery(con,"set search_path to <schema_name>");

如果基礎sql返回結果集,則可以將dbSendQuery()結果分配給var。 此處drop查詢不返回任何結果集Object。 嘗試不分配任何變量。

 dbSendQuery(conn, "drop table if exists lab_space.Tablebla")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM