Redshift__跨伺服器複製表,使用unload和copy命令在S3中實現

lusklusklusk發表於2020-09-10

官方文件



表遷移:利用 RedShift Upload 功能將源伺服器的表資料以檔案形式匯入 S3,再利用 COPY 功能把該檔案從 S3 中匯入目標伺服器的表。如果源伺服器和目標伺服器不再一個region區域,可以利用S3的跨區複製 S3 bucket Cross-Region Replication把檔案從源伺服器對應的region區域複製到目標伺服器對應的region區域

1、源端執行unload後,源端的表還存在,相當於只是select源端的表,把結果存放到S3的儲存桶
2、目標端copy其實是append追加操作,把資料insert到目標表,所以目標端的的表必須存在


源端:
解除安裝資料,源表lukes_test.univ
unload ('select * from lukes_test.univ')
to 's3://redshift-backtesting-unload-copy/lukes_test.univ'
access_key_id 'XX'
secret_access_key 'YY'


目標端:
複製資料,目標端表lukes_test2.univ
copy lukes_test2.univ
from 's3://redshift-backtesting-unload-copy/lukes_test.univ'
access_key_id 'XX'
secret_access_key 'YY'




源端解除安裝資料包錯
unload ('select * from lukes_test.univ')
to 's3://console.aws.amazon.com/s3/buckets/redshift-backtesting-unload-copy/lukes_test.univ'
access_key_id 'XX'
secret_access_key 'YY'
報錯:The S3 bucket addressed by the query is in a different region from this cluster
實際上S3 bucket和redshift叢集都在同一個區域,把上面的s3://console.aws.amazon.com/s3/buckets/redshift-backtesting-unload-copy/lukes_test.univ改成s3://redshift-backtesting-unload-copy/lukes_test.univ即可

目標端copy資料包錯
copy lukes_test2.univ
from 's3://redshift-backtesting-unload-copy/lukes_test.univ'
報錯:Cannot COPY into nonexistent table univ;
目標端的表必須存在才能執行copy動作

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2718561/,如需轉載,請註明出處,否則將追究法律責任。

相關文章