Tôi đang sử dụng RPostgreSQL để đọc và ghi dữ liệu. Đọc từ bất kỳ lược đồ nào hoạt động hoàn hảo, nhưng tôi không thể ghi vào các lược đồ ngoài công lập. Ví dụ, đoạn mã sau đặt một bảng trong lược đồ public
, với tên myschema.tablex
Viết vào các lược đồ cụ thể với RPostgreSQL
# write dataframe to postgres
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, host="localhost", user="postgres", password="zzzz", dbname="mydatabase", port="5436")
if(dbExistsTable(con,"myschema.tablex")) {
dbRemoveTable(con,"myschema.vkt_tablex")}
dbWriteTable(con,"myschema.tablex", dataframe, row.names=F)
Những gì tôi muốn làm, là để đặt các bảng tablex
trong lược đồ myschema
. Tôi cũng đã cố gắng đặt tên lược đồ trong kết nối: dbname="mydatabase.myschema"
và thử đối số schemaname
mà tôi thấy được đề cập đến trong một lỗi trước đó.
Không có cách nào trong số các phương pháp này hoạt động, vì vậy tôi tự hỏi liệu có phương pháp nào khác mà tôi có thể sử dụng hay không.
Cảm ơn @Erwin. Nếu tôi có năm lược đồ, tôi có cần liệt kê tất cả chúng theo thứ tự ưa thích của tôi hay chỉ một lược đồ tôi muốn sử dụng? – djq
@celenius: Bạn không cần phải liệt kê tất cả. Lược đồ đầu tiên trong 'search_path' mà vai trò hiện tại của bạn có thể truy cập sẽ được sử dụng để tạo đối tượng *. Tất cả chúng sẽ được * tìm kiếm * để các đối tượng cho đến khi chúng được tìm thấy. Các lược đồ Ohter là vô hình. Các quy tắc đặc biệt áp dụng cho các lược đồ hệ thống. Giống như một đường dẫn tìm kiếm trong một hệ thống tệp. Hướng dẫn này nói lên tất cả. –
Tuy nhiên, lưu ý rằng lược đồ tiền tố một tablename trên tạo cũng sẽ hoạt động. tức là: tạo thử nghiệm lược đồ; tạo bảng test.abc (i int); \ d test.abc –