从BQ命令行工具中加载数据 - 如何跳过标题行



我有一个带有标头行的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命令行工具QuickStart文档也没有提及跳过标头的任何选项。

一个简单/明显的解决方案是编辑dummy.csv以删除标题行,但是如果指向Google Cloud Storage(而不是本地文件dummy.csv),这不是一个选项。

这可以通过Web界面和Python API进行操作,因此也应该使用bq工具进行。

检查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命令行工具文档中找到了此选项(不是与上面链接的QuickStart文档相同)。

--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

最新更新