首页 > 解决方案 > 将 csv 文件中的非结构化行跳过到 bigquery

问题描述

我在结构化数据之间有一些非结构化数据以及如下所示的空白行

[Date/Heure]
Date:   01-03-2019
Heure:  15:05:01

 14:32:41,(0,897041,A,S),1,148723,Passed,15.465,9.96
 14:32:54,(0,897042,A,A),1,148724,Passed,15.417,8.68
 14:36:50,(0,897043,A,A),1,148725,Passed,15.389,9.19

[Date/Heure]
Date:   01-03-2019
Heure:  14:32:41

我想跳过日期和时间详细信息并仅将结构化数据加载到 bigquery。我已通过应用成功跳过标题行 --skip_leading_rows=1但无法跳过 bq 命令行中的非结构化行。

这是我给出的将 csv 文件加载到 bigquery 的 bq 命令。

bq load --skip_leading_rows=1  --allow_quoted_newlines --field_delimiter=',' DEV.new_table  gs://nikhil-dev/20190503_Table_sup_payment_.csv

标签: excelgoogle-bigquery

解决方案


我同意Eric Keen的观点,即最好的选择是清理输入文件。根据您的用例和数据量,您可以尝试使用 Dataflow 或 Dataprep,如果您想使用云服务,甚至可以尝试使用 Cloud Function,但简单的 Linuxgrep可能会完成这项工作,例如:

grep ',' input_file | tr -d ' ' > output_file

请注意,我还将删除每行开头的空格,但您可以跳过该tr -d命令。

使用--ignore_unknown_valuesor--allow_jagged_rows可能会导致将“垃圾”行插入 BigQuery。您可以使用 来想出一些东西--max_bad_records,但这不是该标志的预期用途。


推荐阅读