我在区域1的集群中有表,我想在其他区域(区域2)的另一个集群中复制其中一些表。
直到现在我已经使用了matillion,为此我遵循了以下步骤 -
由于matillion对我来说工作的成本有点高,我想为此提供另一种解决方案。
虽然我听说过CLI,Lambda和API,但我不知道应该如何使用这些,因为我每周都要经历这个程序,我想自动完成这个过程。
答案 0 :(得分:1)
AWS Command-Line Interface (CLI)与此用例无关,因为它用于控制AWS服务(例如,启动Amazon Redshift数据库,更改安全设置)。从Amazon Redshift导入/导出数据的命令必须直接通过SQL发布到Redshift。
将某些表复制到另一个地区的Amazon Redshift实例:
UNLOAD
command将数据从Redshift导出到Amazon S3存储桶COPY
command将数据从S3加载到Redshift中,使用REGION
参数指定源区域因此,您需要与每个群集分开的SQL连接。任何可以通过 JDBC 连接到Redshift的程序就足够了。例如,您可以使用标准psql
工具(最好是版本8.0.2),因为Redshift基于PostgreSQL 8.0.2。
请参阅:Connect to Your Cluster by Using the psql Tool
因此,您的脚本将类似于:
psql -h clusterA -U username -d mydatabase -c 'UNLOAD...'
psql -h clusterB -U username -d mydatabase -c 'COPY...'
您可以从AWS Lambda运行此命令,但Lambda函数最多只运行五分钟,并且您的脚本可能超出该限制。相反,您可以在某台计算机上运行常规cron
作业。