PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara saya menulis data dari tabel R ke PostgreSQL dengan kunci utama peningkatan otomatis?

Dari utas di komentar hrbrmstr, saya menemukan peretasan untuk membuat ini berfungsi.

Dalam postgresqlWriteTable di RPostgreSQL paket, Anda perlu mengganti baris

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

dengan

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

Perhatikan bahwa kutipan variabel (tidak termasuk dalam peretasan asli) diperlukan untuk meneruskan nama kolom peka huruf besar/kecil.

Berikut skrip untuk melakukannya:

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. Lambat LEFT JOIN di CTE dengan interval waktu

  2. Hasilkan sql dengan subquery sebagai kolom dalam pernyataan pilih menggunakan SQLAlchemy

  3. Cara Menghindari Penguncian Vendor Cloud PostgreSQL

  4. Perbedaan antara LIKE dan ~ di Postgres

  5. urutan postgresql nextval dalam skema