sql >> Database teknologi >  >> RDS >> PostgreSQL

RPostgreSQL - R-forbindelse til Amazon Redshift - Sådan SKRIVER/Send større datasæt

Det kan være for sent for OP, men jeg poster dette her til fremtidig reference, hvis nogen finder det samme problem:

Trinene til at lave en masseindsættelse er:

  • Opret en tabel i Redshift med samme struktur som min dataramme
  • Opdel dataene i N dele
  • Konverter delene til et format, der kan læses af Redshift
  • Upload alle delene til Amazon S3
  • Kør COPY-erklæringen på Redshift
  • Slet de midlertidige filer på Amazon S3

Jeg har oprettet en R-pakke, som gør præcis dette, bortset fra det første trin, og den hedder redshiftTools:https://github.com/sicarul/redshiftTools

For at installere pakken skal du gøre:

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

Bagefter vil du kunne bruge det sådan her:

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 afkorter måltabellen og indlæser den derefter helt fra datarammen, gør kun dette, hvis du er ligeglad med de aktuelle data, den indeholder. På den anden side, rs_upsert_table erstatter rækker, der har sammenfaldende nøgler, og indsætter dem, der ikke findes i tabellen.




  1. RDLC LocalReport Eksport til Excel virkelig langsom

  2. Tæl forekomster af tegn i en streng ved hjælp af MySQL

  3. Finde andelen af ​​hvert X bestående af Y i PostgreSQL?

  4. Postgresql lagret procedure returnerer tabel alle kolonner