excel - 将 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
解决方案
我同意Eric Keen的观点,即最好的选择是清理输入文件。根据您的用例和数据量,您可以尝试使用 Dataflow 或 Dataprep,如果您想使用云服务,甚至可以尝试使用 Cloud Function,但简单的 Linuxgrep
可能会完成这项工作,例如:
grep ',' input_file | tr -d ' ' > output_file
请注意,我还将删除每行开头的空格,但您可以跳过该tr -d
命令。
使用--ignore_unknown_values
or--allow_jagged_rows
可能会导致将“垃圾”行插入 BigQuery。您可以使用 来想出一些东西--max_bad_records
,但这不是该标志的预期用途。
推荐阅读
- python - 从字符串中删除新行而不删除“\n”?
- python - OneHotEncoding 用于分类数据
- python - Python/Selenium - 单击按钮
- javascript - 如何在不重新加载控制台的情况下打开新 URL
- java - Spring集成tcpClient收不到消息
- javascript - sapui5 如何为同步 Ajax GET 请求提供忙碌指示符
- c - 如何通过c编程中的switch case解决这个程序?
- grpc - 未收集 gRPC 测试统计信息
- qradar - 如何在 IBM Qradar 中生成 SEC 令牌
- javascript - 无法膨胀 SessionStorage 数据;根据通货膨胀方法获得“不正确的标头检查”或“无效的存储块长度”