PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

RPostgreSQL - Koneksi R ke Amazon Redshift - Cara MENULIS/Memposting Kumpulan Data yang Lebih Besar

Mungkin sudah terlambat untuk OP, tetapi saya akan memposting ini di sini untuk referensi di masa mendatang jika seseorang menemukan masalah yang sama:

Langkah-langkah untuk melakukan penyisipan Massal adalah:

  • Buat tabel di Redshift dengan struktur yang sama dengan bingkai data saya
  • Pisahkan data menjadi N bagian
  • Mengubah bagian menjadi format yang dapat dibaca oleh Redshift
  • Unggah semua bagian ke Amazon S3
  • Jalankan pernyataan COPY di Redshift
  • Hapus file sementara di Amazon S3

Saya telah membuat Paket R yang melakukan hal ini, kecuali untuk langkah pertama, dan itu disebut redshiftTools:https://github.com/sicarul/redshiftTools

Untuk menginstal paket, Anda harus melakukan:

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

Setelah itu, Anda akan dapat menggunakannya seperti ini:

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 memotong tabel target dan kemudian memuatnya seluruhnya dari bingkai data, hanya lakukan ini jika Anda tidak peduli dengan data saat ini yang disimpannya. Sebaliknya, rs_upsert_table menggantikan baris yang memiliki kunci yang sama, dan menyisipkan baris yang tidak ada dalam tabel.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mendapatkan rentetan sekuensial maksimum dengan acara

  2. Bagaimana menemukan posting yang ditandai dengan lebih dari satu tag di Rails dan Postgresql

  3. Python/postgres/psycopg2:mendapatkan ID baris yang baru saja dimasukkan

  4. Format waktu Rails Activerecord/Postgres

  5. Mengapa postgresql 9.1 tidak berfungsi dengan Rails 3.0?