BigQuery 无法将“null”解析为字段的 int

Cha*_*han 6 google-bigquery

试图将 csv 文件加载到 bigquery 表中。有些列的类型是 INTEGER,但一些缺失值是 NULL。所以当我使用命令 bq load 加载时,得到以下错误:

无法将“null”解析为字段的 int

所以我想知道处理这个问题的最佳解决方案是什么,必须先重新处理数据才能加载 bq?

Ell*_*ard 7

您需要转换数据才能得到预期的架构和数据。将列指定为具有类型 STRING,而不是 INTEGER。将 CSV 文件加载到您不打算长期使用的表中,例如 YourTempTable。在 BigQuery 界面中,单击“显示选项”,然后选择具有所需表名的目标表。现在运行查询:

#standardSQL
SELECT * REPLACE(SAFE_CAST(x AS INT64) AS x)
FROM YourTempTable;
Run Code Online (Sandbox Code Playgroud)

这会将字符串值转换为整数,其中'null'被视为null.


小智 6

请尝试使用作业配置设置。

job_config.null_marker = 'NULL'

configuration.load.nullMarker
string
[可选] 指定表示 CSV 文件中空值的字符串。例如,如果您指定“\N”,BigQuery 在加载 CSV 文件时会将“\N”解释为空值。默认值为空字符串。如果您将此属性设置为自定义值,则当除 STRING 和 BYTE 之外的所有数据类型都存在空字符串时,BigQuery 会引发错误。对于 STRING 和 BYTE 列,BigQuery 将空字符串解释为空值。

https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs#configuration.load