sql >> Databáze >  >> RDS >> PostgreSQL

RPostgreSQL - R připojení k Amazon Redshift - Jak psát/uveřejňovat větší datové sady

Na OP může být příliš pozdě, ale zveřejním to zde pro budoucí použití, pokud někdo najde stejný problém:

Postup hromadného vkládání je následující:

  • Vytvořit tabulku v Redshift se stejnou strukturou jako můj datový rámec
  • Rozdělte data na N částí
  • Převeďte části do formátu čitelného funkcí Redshift
  • Nahrajte všechny díly do Amazon S3
  • Spusťte příkaz COPY na Redshift
  • Smažte dočasné soubory na Amazon S3

Vytvořil jsem balíček R, který dělá přesně toto, kromě prvního kroku, a jmenuje se redshiftTools:https://github.com/sicaul/redshiftTools

Chcete-li balíček nainstalovat, musíte provést:

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

Poté jej budete moci používat takto:

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 zkrátí cílovou tabulku a poté ji zcela načte z datového rámce, proveďte to pouze v případě, že se nestaráte o aktuální data, která obsahuje. Na druhé straně rs_upsert_table nahradí řádky, které mají shodné klíče, a vloží ty, které v tabulce neexistují.




  1. Jak nainstalovat Kubernetes pomocí Kubeadm

  2. Multi-Dimensional Array z odpovídajících sloupců mysql

  3. Vrácení parametrů v příkazech Oracle SQL insert

  4. Mysql:Počítání záznamů (včetně nuly) za měsíc