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

RPostgreSQL - R Kết nối với Amazon Redshift - Cách VIẾT / Đăng Tập dữ liệu lớn hơn

Có thể đã quá muộn đối với OP, nhưng tôi sẽ đăng bài này ở đây để tham khảo trong tương lai nếu ai đó phát hiện ra vấn đề tương tự:

Các bước để thực hiện chèn hàng loạt là:

  • Tạo một bảng trong Redshift có cùng cấu trúc với khung dữ liệu của tôi
  • Chia dữ liệu thành N phần
  • Chuyển đổi các phần thành định dạng có thể đọc được bằng Redshift
  • Tải tất cả các phần lên Amazon S3
  • Chạy câu lệnh COPY trên Redshift
  • Xóa các tệp tạm thời trên Amazon S3

Tôi đã tạo Gói R thực hiện chính xác điều này, ngoại trừ bước đầu tiên và nó được gọi là redshiftTools: https://github.com/sicarul/redshiftTools

Để cài đặt gói, bạn cần thực hiện:

install.packages('devtools')
devtools::install_github("RcppCore/Rcpp")
devtools::install_github("rstats-db/DBI")
devtools::install_github("rstats-db/RPostgres")
devtools::install_github("hadley/xml2")
install.packages("aws.s3", repos = c(getOption("repos"), "http://cloudyr.github.io/drat"))
devtools::install_github("sicarul/redshiftTools")

Sau đó, bạn sẽ có thể sử dụng nó như sau:

Thư viện
library("aws.s3")
library(RPostgres)
library(redshiftTools)

con <- dbConnect(RPostgres::Postgres(), dbname="dbname",
host='my-redshift-url.amazon.com', port='5439',
user='myuser', password='mypassword',sslmode='require')

rs_replace_table(my_data, dbcon=con, tableName='mytable', bucket="mybucket")
rs_upsert_table(my_other_data, dbcon=con, tableName = 'mytable', bucket="mybucket", keys=c('id', 'date'))

rs_replace_table cắt ngắn bảng mục tiêu và sau đó tải nó hoàn toàn từ khung dữ liệu, chỉ thực hiện việc này nếu bạn không quan tâm đến dữ liệu hiện tại mà nó nắm giữ. Mặt khác, rs_upsert_table thay thế các hàng có khóa trùng nhau và chèn những hàng không tồn tại trong bảng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql's pg_dump và pg_restore trên các phiên bản chính khác nhau?

  2. Xuất cơ sở dữ liệu PostgreSQL với phpPgAdmin

  3. Làm thế nào để sử dụng Rails với tên cột viết hoa?

  4. Kiểm tra cơ sở dữ liệu trong python, postgresql

  5. Làm cách nào để tạo một truy vấn chèn vào cơ sở dữ liệu khác bằng cách sử dụng postgres_fdw?