试图将 csv 文件加载到 bigquery 表中。有些列的类型是 INTEGER,但一些缺失值是 NULL。所以当我使用命令 bq load 加载时,得到以下错误:
无法将“null”解析为字段的 int
所以我想知道处理这个问题的最佳解决方案是什么,必须先重新处理数据才能加载 bq?
您需要转换数据才能得到预期的架构和数据。将列指定为具有类型 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
| 归档时间: |
|
| 查看次数: |
7947 次 |
| 最近记录: |