在 Amazon Redshift Spectrum 中加载外部表时如何跳过最后几条记录?

Posted

技术标签:

【中文标题】在 Amazon Redshift Spectrum 中加载外部表时如何跳过最后几条记录?【英文标题】:How to skip end few records when loading external table in Amazon Redshift Spectrum? 【发布时间】:2019-02-04 11:02:59 【问题描述】:

我的文件末尾有文本。

在创建外部表时,我正在从 S3 加载文件,我不想将其加载到我的表中。

如何从末尾跳过该文本?

【问题讨论】:

你不能这样做 - 你需要找到另一种方法。请使用您正在使用的复制命令和 s3 数据示例更新您的问题 请同时描述您的 ETL 流程,即文件如何到达 s3,有多少,您复制到 redshift 的频率等 嗨 Rishant,您实际上是在将数据加载(使用 COPY)到 Redshift,还是使用存储在 S3 上的文件和 Spectrum(外部表)来表示数据?从你的问题看不清楚。 其实我并没有使用复制命令,我使用的是存储在 S3 中的文件和频谱来表示数据 【参考方案1】:

您不能在末尾显式跳过行,但可以使用 MAXERROR 参数允许一定数量的错误。应该可以将其设置为 (number of lines to skip * number of files to be loaded)。

https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-load.html#copy-maxerror

【讨论】:

乔,每行不能有 >1 个错误吗?对于大量数据不是理想的解决方案 - 或者当您需要确保数据准确性时 - 最大值 = 1,000,000 这可能是危险的,除了 OP 打算跳过最后 n 行之外,它可能会引入更多数据问题,允许错误通过。 这是使用复制命令时的解决方案,但我没有使用复制命令

以上是关于在 Amazon Redshift Spectrum 中加载外部表时如何跳过最后几条记录?的主要内容,如果未能解决你的问题,请参考以下文章

amazon-redshift 中的 CONCAT 函数

Amazon Redshift 按特定值排序

在 Amazon Redshift 中按日期透视查询

不使用 jdbc 驱动程序查询 Amazon Redshift

与 Amazon Redshift 同步

有用的 Amazon Redshift SQL 用户定义函数的任何示例?