通过 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