CSV 值的 bigquery 架构
Posted
技术标签:
【中文标题】CSV 值的 bigquery 架构【英文标题】:bigquery schema for CSV values 【发布时间】: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 中进行过滤和转换 【参考方案1】:尝试将引号字符设置为 '\0' 或未出现在表格中的内容。 TSV 文件通常不引用字段(即您不会有看起来像 a\t"foo bar"\tbaz
的行)所以这应该没问题,除非您有应该引用的制表符(这在 TSV 中不太可能)。
【讨论】:
感谢您的建议。我通过从记录中删除引号并删除以非整数值开头的记录来解决它。以上是关于CSV 值的 bigquery 架构的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery - 如何在不使用列名作为值的情况下导入 CSV?