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.