【问题标题】:bigquery schema for CSV valuesCSV 值的 bigquery 架构
【发布时间】:2014-05-06 20:52:28
【问题描述】:

我正在尝试使用 bq 命令行工具将数据加载到 bigquery 中。数据采用以下方案(TSV):

time_stamp:INTEGER
id:INTEGER
url:STRING (-- unused/ignore)
domain:STRING
keyword:STRING
normalized_key:STRING (-- comma separated list)
is_natural:BOOLEAN (as "t"/"f")
category_code:STRING
p_id:STRING

但我收到以下错误

File: 0 / Line:120642 / Field:5: Data between close double quote
(") and field separator: field starts with: <massive >
File: 0 / Line:127690 / Field:1: Value cannot be converted to
expected type.

我的理解是

  • 文件:0 / 行:120642 / 字段:5:关闭双引号之间的数据 (") 和字段分隔符:字段以:--> 这是因为 Field:5 的值是逗号分隔列表

  • 文件:0 / 行:127690 / 字段:1:值无法转换为 预期类型。 --> 实际字段值的类型与预期不同。

如何让 bigquery 将逗号分隔的列表读取为 Field:5 值并忽略字段值与预期类型不同的记录

【问题讨论】:

  • 发现第二个错误:--max_bad_records=xx,但没有用。
  • 用大数替换xx。这就是我所做的:)
  • 在此之前,为了解决第一个错误,我使用 sed 删除了双引号。
  • 现在我想删除第一列中以非整数开头的记录。
  • 另一种选择:将所有内容导入为字符串,稍后在 BigQuery 中进行过滤和转换

标签: python sql google-bigquery google-cloud-storage google-cloud-sql


【解决方案1】:

尝试将引号字符设置为 '\0' 或未出现在表格中的内容。 TSV 文件通常不引用字段(即您不会有看起来像 a\t"foo bar"\tbaz 的行)所以这应该没问题,除非您有应该引用的制表符(这在 TSV 中不太可能)。

【讨论】:

  • 感谢您的建议。我通过从记录中删除引号并删除以非整数值开头的记录来解决它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-09
  • 2015-10-23
  • 2017-07-12
相关资源
最近更新 更多