【问题标题】:How to process Boolean NULL values when loading data from S3 to RedShift?将数据从 S3 加载到 RedShift 时如何处理布尔 NULL 值?
【发布时间】:2018-12-26 07:16:53
【问题描述】:

我正在将布尔值解析为字符串,以便将它们与其他数据一起保存到csv 文件并加载到 S3。然后这些文件被加载到 RedShift。我希望布尔列包含真/假以及空值(如 NULL、N/A 或只是一个空单元格)。

在阅读了documentation 关于 RedShift 中布尔值的信息后,我决定将空值存储为 NULL。根据文档,NULL 是一个有效的布尔值。以下是我将布尔值解析为字符串的方法:

  private def parseBooleans(value: Option[Boolean]): String = {
    value match {
      case Some(true) => "true"
      case Some(false) => "false"
      case None => "NULL"
    }
  }

但是我收到了1210 Unknown boolean format 错误。我也尝试通过“N/A”,但它也不起作用。

如何将空值传递给 RedShift 表中的布尔列?

【问题讨论】:

  • 也许只是null
  • @Dima 不幸的是它导致了同样的错误
  • 我怀疑 scala 代码传递的是文字字符串“NULL”而不是实际的 null,这是错误的原因。也许您需要改用scala.Null

标签: scala amazon-web-services amazon-s3 amazon-redshift


【解决方案1】:

您应该在COPY 命令中使用NULL AS 选项。或者使用它的默认值'\N'

COPY mytable
FROM 's3://path' 
NULL AS 'NULL'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-08
    • 2020-02-11
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多