通过 API 将 csv 数据加载到 Big Query

Posted

技术标签:

【中文标题】通过 API 将 csv 数据加载到 Big Query【英文标题】:Loading csv data into Big Query via API 【发布时间】:2018-04-25 15:26:36 【问题描述】:

我正在尝试将 CSV 文件上传到大型查询数据库,但是我不断收到以下消息。

RuntimeError: ['reason': 'invalid', 'location': 'kid=70943:mkey=customer_encrypt_cns/file-00000000', 'message': 'Error while reading data, error message: CSV table encountered too many errors, giving up. Rows: 1; errors: 1. Please look into the error stream for more details.', 'reason': 'invalid', 'location': 'kid=70943:mkey=customer_encrypt_cns/file-00000000', 'message': 'Error while reading data, error message: CSV table references column position 1, but line starting at position:0 contains only 1 columns.']

csv 中的数据与架构匹配,作为测试,我只上传 5 行 8 列,例如

2018-02-02  x   0.1 2.4 0   0   0.88    0.4
2018-02-03  y   0.1 3   0   0   0.87    0.21
2018-02-04  z   0.1 2.8 0   0   0.86    0.21
2018-02-05  a   0.1 2.4 0   0   0.91    0.21
2018-02-06  b   0.1 1.9 0   0   1.00    0.4

为什么说我只有一栏?

【问题讨论】:

这看起来像一个 tab 分隔的文件,而不是逗号分隔的文件。您是否指定了适当的分隔符? CSV 是一个逗号分隔的文件。但在您的数据样本中没有逗号。您确定要上传逗号分隔的文件吗? 【参考方案1】:

它说您有 1 列,因为您的数据没有被格式化/解析为正确的 CSV 文件,因为没有明确的字段分隔符。我已将数据正确格式化为制表符分隔,并且能够将其加载到 BigQuery 中,从而获得 5 行 8 列。

这是使用的数据:

2018-02-06  x   0.1 2.4 0   0   0.88    0.4
2018-02-03  y   0.1 3   0   0   0.87    0.21
2018-02-04  z   0.1 2.8 0   0   0.86    0.21
2018-02-05  a   0.1 2.4 0   0   0.91    0.21
2018-02-06  b   0.1 1.9 0   0   1.00    0.4

【讨论】:

【参考方案2】:

你能提供请求正文吗?

BigQuery 似乎无法使用提供的选项解析文件。 关于您的文件,您应该指定 "fieldDelimiter":"\t" 选项。 您可以查看 BigQuery API documentation 了解详情。

BigQuery 还支持 schema auto-detection 用于逗号 (,)、竖线 (|) 和制表符 (\t) 分隔的字段。

【讨论】:

以上是关于通过 API 将 csv 数据加载到 Big Query的主要内容,如果未能解决你的问题,请参考以下文章

当Big Query加载失败并且CSV表遇到太多错误时,获取更多信息,放弃[重复]

如何以 CSV 表格格式将原始数据源从 Google Big Query 导出到 R 服务器?

通过 POST 将 CSV 数据发送到 BigQuery REST API

通过验证将 csv 文件内容加载到 mysql 表中

如何将 .gz 文件上传到 Google Big Query?

从外部表读取与加载数据并在 Bigquery 中读取