PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

RPostgreSQL - Połączenie R z Amazon Redshift - Jak ZAPISYWAĆ/publikować większe zbiory danych

Może być już za późno na OP, ale opublikuję to tutaj do wykorzystania w przyszłości, jeśli ktoś znajdzie ten sam problem:

Kroki do wykonania wstawiania zbiorczego to:

  • Utwórz tabelę w Redshift o takiej samej strukturze jak moja ramka danych
  • Podziel dane na N części
  • Konwertuj części na format czytelny dla Redshift
  • Prześlij wszystkie części do Amazon S3
  • Uruchom oświadczenie COPY na Redshift
  • Usuń pliki tymczasowe w Amazon S3

Stworzyłem pakiet R, który robi dokładnie to, z wyjątkiem pierwszego kroku i nazywa się redshiftTools:https://github.com/sicarul/redshiftTools

Aby zainstalować pakiet, musisz wykonać:

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")

Później będziesz mógł z niego korzystać w ten sposób:

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 obcina tabelę docelową, a następnie ładuje ją całkowicie z ramki danych, rób to tylko wtedy, gdy nie zależy Ci na bieżących danych, które przechowuje. Z drugiej strony rs_upsert_table zastępuje wiersze, które mają zbieżne klucze i wstawia te, które nie istnieją w tabeli.




  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:Jak znaleźć plik pg_hba.conf w systemie Mac OS X?

  2. Postgresql:Zapytanie zwracające nieprawidłowe dane

  3. Nie można znaleźć kolumny o logicznej nazwie

  4. Jak mogę spełnić ograniczenie force_srid_coordinate z GeoDjango/PostGIS?

  5. Czy dodanie zbędnych tabel w klauzulach WITH spowalnia zapytanie w PostgreSQL?