【问题标题】:'NULL' value of VARCHAR(30) NOT NULL is treated as null when bq loadVARCHAR(30) NOT NULL 的“NULL”值在 bq 加载时被视为 null
【发布时间】:2018-07-02 15:16:29
【问题描述】:

我尝试将 csv 文件加载到 bigquery 表中。有些列的类型为 VARCHAR(30) NOT NULL,而某些值为“NULL”。所以当我使用命令 bq load 加载时,得到如下错误:

读取数据时出错,错误信息:'NULL' is null for required

我想将“NULL”值视为 NOT NULL。 我想知道解决这个问题的最佳解决方案是什么。

【问题讨论】:

  • 这个 CSV 文件从哪里来?我不知道 BQ,但是当您将 BQ 表写入文件时,'NULL'NULL 值的标记吗?您需要对此进行检查;也许当前的行为是应该发生的。
  • 谢谢,我遇到了以下问题并设置了'--null_marker="NULL"'。 stackoverflow.com/questions/45384433/…
  • 我想解决这两个问题。

标签: google-bigquery


【解决方案1】:

在这种情况下,最好在将数据导入 BigQuery 之前对其进行处理。您可以使用Cloud Dataprep 处理NULL 值并将它们转换为空字符串或您认为合适的任何字符串。您可以按照以下步骤操作:

  1. 在 Cloud 控制台中转到 Dataprep
  2. 创建流
  3. 添加数据集(导入 CSV 文件)
  4. 创建新配方
  5. 在转换下选择“替换”
  6. 选择原始数据列
  7. 在匹配模式下添加以下正则表达式/^$/(这将匹配空字符串)
  8. 选择您认为合适的新字符串值

作业完成后,您可以将结果导出为 csv 并将其导入 BigQuery。

请注意,Dataprep 将NULL 值视为MISSING,如documentation 中所述

【讨论】:

    猜你喜欢
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 2018-01-25
    • 1970-01-01
    相关资源
    最近更新 更多