PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để ghi dữ liệu từ R vào các bảng PostgreSQL với khóa chính tự động tăng thêm?

Từ chủ đề trong nhận xét của hrbrmstr, tôi đã tìm thấy một thủ thuật để làm cho điều này hoạt động.

Trong postgresqlWriteTable trong RPostgreSQL gói, bạn cần thay thế dòng

sql4 <- paste("COPY", postgresqlTableRef(name), "FROM STDIN")

với

sql4 <- paste(
  "COPY ", 
  postgresqlTableRef(name), 
  "(", 
  paste(postgresqlQuoteId(names(value)), collapse = ","), 
  ") FROM STDIN"
)

Lưu ý rằng việc trích dẫn các biến (không có trong bản hack gốc) là cần thiết để chuyển các tên cột phân biệt chữ hoa chữ thường.

Đây là một tập lệnh để thực hiện điều đó:

body_lines <- deparse(body(RPostgreSQL::postgresqlWriteTable))
new_body_lines <- sub(
  'postgresqlTableRef(name), "FROM STDIN")', 
  'postgresqlTableRef(name), "(", paste(shQuote(names(value)), collapse = ","), ") FROM STDIN")', 
  body_lines,
  fixed = TRUE
)
fn <- RPostgreSQL::postgresqlWriteTable
body(fn) <- parse(text = new_body_lines)
while("RPostgreSQL" %in% search()) detach("package:RPostgreSQL")
assignInNamespace("postgresqlWriteTable", fn, "RPostgreSQL")


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao chỉ một siêu người dùng mới có thể TẠO MỞ RỘNG hstore mà không phải trên Heroku?

  2. JavaScript này yêu cầu gì?

  3. Mối quan hệ không tồn tại

  4. Cách sao lưu và khôi phục cơ sở dữ liệu PostgreSQL

  5. lấy bảng JOIN dưới dạng mảng kết quả với PostgreSQL / NodeJS