PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

RPostgreSQL - R връзка към Amazon Redshift - Как да ПИШЕТЕ/Публикувате по-големи набори от данни

Може да е твърде късно за OP, но ще публикувам това тук за бъдещи справки, ако някой открие същия проблем:

Стъпките за групово вмъкване са:

  • Създаване на таблица в Redshift със същата структура като моята рамка с данни
  • Разделете данните на N части
  • Преобразувайте частите във формат, който може да се чете от Redshift
  • Качете всички части в Amazon S3
  • Изпълнете командата COPY на Redshift
  • Изтрийте временните файлове на Amazon S3

Създадох R пакет, който прави точно това, с изключение на първата стъпка, и се нарича redshiftTools:https://github.com/sicarul/redshiftTools

За да инсталирате пакета, ще трябва да направите:

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

След това ще можете да го използвате по следния начин:

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 съкращава целевата таблица и след това я зарежда изцяло от рамката с данни, направете това само ако не ви е грижа за текущите данни, които съдържа. От друга страна, rs_upsert_table замества редове, които имат съвпадащи ключове, и вмъква тези, които не съществуват в таблицата.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Сканиране на индекс за сравнение в няколко колони - неравномерно подреждане на колони на индекси

  2. Използване на PostgreSQL база данни с Docker и Flask, как работи?

  3. Има ли начин да се дефинира именувана константа в заявка на PostgreSQL?

  4. Как да използвам LoggingConnection на Psycopg2?

  5. Как се пише SQL в миграция в Rails