BigQuery 从 bq 命令行工具加载数据 - 如何跳过标题行
Posted
技术标签:
【中文标题】BigQuery 从 bq 命令行工具加载数据 - 如何跳过标题行【英文标题】:BigQuery loading data from bq command line tool - how to skip header rows 【发布时间】:2017-09-28 21:48:16 【问题描述】:我有一个带有标题行的 CSV 数据文件,用于填充 BigQuery 表:
$ cat dummy.csv
Field1,Field2,Field3,Field4
10.5,20.5,30.5,40.5
10.6,20.6,30.6,40.6
10.7,20.7,30.7,40.7
使用 Web UI 时,有一个文本框,我可以在其中指定要跳过的标题行数。但是,如果我使用 bq
命令行工具将数据上传到 BigQuery,我没有执行此操作的选项,并且总是收到以下错误:
$ bq load my-project:my-dataset.dummydata dummy.csv Field1:float,Field2:float,Field3:float,Field4:float
Upload complete.
Waiting on bqjob_r7eccfe35f_0000015e3e8c_1 ... (0s) Current status: DONE
BigQuery error in load operation: Error processing job 'my-project:bqjob_r7eccfe35f_0000015e3e8c_1': CSV table encountered too many errors, giving up. Rows: 1;
errors: 1.
Failure details:
- file-00000000: Could not parse 'Field1' as double for field Field1
(position 0) starting at location 0
bq command line tool quickstart documentation 也没有提到任何跳过标题的选项。
一个简单/明显的解决方案是编辑 dummy.csv
以删除标题行,但如果指向 Google Cloud Storage 上的 CSV 文件而不是本地文件 dummy.csv
,这不是一个选项。
这可以通过网络界面和Python API 来实现,因此也应该可以通过bq
工具来实现。
【问题讨论】:
【参考方案1】:检查bq help load
显示--skip_leading_rows
选项:
--skip_leading_rows : The number of rows at the beginning of the source file to skip.
(an integer)
还在bq command line tool documentation 中找到了此选项(与上面链接的快速入门文档不相同)。
将--skip_leading_rows=1
添加到bq load
命令就像一个魅力。
这里是成功的命令:
$ bq load --skip_leading_rows=1 my-project:my-dataset.dummydata dummy.csv Field1:float,Field2:float,Field3:float,Field4:float
Upload complete.
Waiting on bqjob_r43eb07bad58_0000015ecea_1 ... (0s) Current status: DONE
【讨论】:
以上是关于BigQuery 从 bq 命令行工具加载数据 - 如何跳过标题行的主要内容,如果未能解决你的问题,请参考以下文章
如何获取在 BigQuery 命令行工具中运行的最后一个作业的作业 ID?
使用命令行将数据从 BigQuery 加载到 Google 表格中
用于扩展或增强 bq 命令行的 Google BigQuery bq 命令行 SDK
使用 bq 将数据加载到 BigQuery 的自定义日期格式?