是否可以在AWS环境中使用Netezza备份文件并将其加载到Redshift。 文件是使用以下查询创建的压缩二进制文件。该文件也可以使用 Netezza 中的 NZ_BACKUP 实用程序生成完整数据库。
CREATE EXTERNAL TABLE 'C:\filename.bak' USING (remotesource 'ODBC' FORMAT 'internal'
COMPRESS true) AS SELECT * FROM schema.tablename;
or
nzbackup -dir /home/user/backups -u user -pw password -db db1
我希望使用 Python 或 PySpark(胶水)对该文件进行解码并加载到 AWS 环境中的数据帧。以下是我计划在 AWS 中执行的步骤。我在第一步需要一些指导。如何解码来自 Netezza 的压缩二进制文件。
1.压缩后的文件是什么样的? (做
file xyz.bin
或file xyz.bak
)
2.然后相应地解压它
gzip -dk xyz.bin/bak
3.一旦你有了 ASCII 格式的文件,就可以使用 python 方法
df.to_parquet('path')
无法直接从 parquet 文件复制到 redshift(但是它支持
COPY
),因此要解决此问题,您需要转换为 CSV 文件(AWS Glue),然后将该 csv 复制到 redshift
COPY table_name
FROM 's3://bucket/path/to/output.csv'
IAM_ROLE 'arn:aws:iam::123456789012:role/RedshiftCopyUnload'
CSV;