我想在这里逐点回答,所以会有点长,请原谅;),但在我看来,我觉得最好的选择是Unload to S3 和Copy to table from S3。在这里,S3 可以替换为EC2。
-
传统方式- 如果我们需要进行一些数据交替并且希望空运行查询,我们更愿意这样做。
-
传统方式备份和不同的恢复方法与 #1 相同的问题,我们不使用。
-
UNLOAD 和 COPY:这是最方便的方法,甚至 IDENTITIES 都可以保留,因此始终是首选方法。
列出了一些问题,但大多数都是错误的,或者可以通过提供正确的导出/导入参数来避免。我想提供所有必要的步骤和数据来证明我的观点,dates 和timestamps 在加载和卸载过程中没有问题。
我在这里做了大部分数据类型来证明我的观点。
create table sales(
salesid integer not null Identity,
commission decimal(8,2),
saledate date,
description varchar(255),
created_at timestamp default sysdate,
updated_at timestamp);
CSV 格式的内容(sales-example.txt)
salesid,commission,saledate,description,created_at,updated_at
1|3.55|2018-12-10|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
2|6.55|2018-01-01|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
4|7.55|2018-02-10|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
5|3.55||Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
7|3.50|2018-10-10|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
将导入 date、timestamps 以及 ID 的复制命令。
copy sales(salesid,commission,saledate,description,created_at,updated_at) from 's3://****/de***/sales-example.txt' credentials 'aws_access_key_id=************;aws_secret_access_key=***********' IGNOREHEADER 1 EXPLICIT_IDS;
这将复制 5 条记录。我在这里 parallel off 以获取单个 CSV 中的数据来证明这一点,但不是必需的,应该避免。
unload ('select salesid,commission,saledate,description,created_at,updated_at from sales') to 's3://assortdw/development/sales-example-2.txt' credentials 'aws_access_key_id=***********;aws_secret_access_key=***********' parallel off;
下面是我的内容,与导入的内容完全相同,这意味着如果将Copy 命令运行到任何其他环境,例如dev 或QA 或某处,我将获得与之前完全相同的记录在Redshift 集群中。
5|3.55||Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
1|3.55|2018-12-10|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
7|3.50|2018-10-10|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
2|6.55|2018-01-01|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
4|7.55|2018-02-10|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
-
从快照恢复表:这需要我们的`networking/infrastructure 组,因此我们避免,尽管不太确定。欢迎其他专家对此发表评论/分享详细信息。
我希望这能回答问题,并为discuss/summarize/conclude 提供一个起点。欢迎大家加分。