将 csv 从 GCS 上传到 BigQuery 时,有没有办法提供架构或自动检测架构?

问题描述 投票:0回答:3

我正在尝试将 csv 文件从 Google Cloud Storage (GCS) 上传到 BigQuery (BQ) 并自动检测架构。

我尝试做的是启用自动检测架构并在“要跳过的标题行”选项中输入要跳过的行数。我有 6 行,其中包含有关我需要跳过的数据的描述性信息。第 7 行是我的实际标题行。

根据 Google 的文档:https://cloud.google.com/bigquery/docs/schema-detect#auto-detect:

“字段类型基于具有最多字段的行。因此,只要每一列/字段中至少有一行数据具有值,自动检测就应该按预期工作。

我的 CSV 的问题是,行中存在空值,因此不满足上述条件。

此外,我的 CSV 包含许多行,其中不包含任何数值,我认为这为 Google 模式自动检测增加了额外的复杂性。

自动检测未检测到正确的列名称或正确的字段类型。所有字段类型都被检测为字符串和列名称,如下所示: string_field_0 、 string_field_1 、 string_field_3 等。它还将我的 CSV 的列名称作为一行数据传递。

我想知道如何正确上传此 CSV 到 BQ,跳过不需要的前导行并拥有正确的架构(字段名称和字段类型)。

csv google-cloud-platform google-bigquery schema gcs
3个回答
2
投票

在阅读了一些文档之后,特别是 CSV 标题部分,我认为您所观察到的是预期的行为。

另一种方法是手动指定数据的架构。


1
投票

您可以尝试使用 bigquery-schema-generator 等工具从 csv 文件生成架构,然后在

bq load
作业中使用它。


0
投票

通过将 csv 中的实际标题行包含在要跳过的行数中来解决此问题。

我实际上需要跳过 6 行。第七行是我的标题(列名称)。我在标题行中输入 6 来跳过。

当我输入 7 而不是 6 时,模式会被正确自动检测到。

另外,我意识到 Google 文档中的这句话:“字段类型基于具有最多字段的行。因此,只要有至少一行数据 具有,自动检测就应该按预期工作。每个列/字段中的值。”,空值被视为值,因此这实际上并没有导致上传到 BQ 时出现问题。

希望这可以帮助面临同样问题的人!

© www.soinside.com 2019 - 2024. All rights reserved.