我正在使用BigQuery,并使用它来查询Google云端存储中存储桶中的CSV文件。我遇到了一些奇怪的行为 - 只有当CSV中有3行,并且第一行包含任何字段中的字符串时 - 查询表时,第一行丢失。
myfile.csv
:testin,2,2
testing3,3,4
gsutil cp myfile.csv gs://bucket/
gs://bucket/myfile.csv
的外部表:bq mk --external_table_definition=Field1:STRING,Field2:STRING,Field3:INTEGER@CSV=gs://bucket/myfile.csv dataset.table
bq query "SELECT * FROM dataset.table;"
Waiting on biquery_job_id_1234567 ... (0s) Current
status: DONE
+----------+--------+--------+
| Field1 | Field2 | Field3 |
+----------+--------+--------+
| testin | 2 | 2 |
| testing3 | 3 | 4 |
+----------+--------+--------+
myfile.csv
更改为如下所示:1,h,3
testin,2,2
testing3,3,4
gs://bucket/myfile.csv
:gsutil cp myfile.csv gs://bucket/
dataset.table
:bq query "SELECT * FROM dataset.table;"
Waiting on bigquery_job_78901234 ... (0s) Current status: DONE
+----------+--------+--------+
| Field1 | Field2 | Field3 |
+----------+--------+--------+
| testin | 2 | 2 |
| testing3 | 3 | 4 |
+----------+--------+--------+
gsutil cat gs://bucket/myfile.csv
1,h,3
testin,2,2
testing3,3,4
myfile.csv
如下所示:1,2,3
testin,2,2
testing3,3,4
gsutil cp myfile.csv gs://bucket/
bq query "SELECT * FROM dataset.table;"
Waiting on bigquery_job_4567890 ... (0s) Current status: DONE
+----------+--------+--------+
| Field1 | Field2 | Field3 |
+----------+--------+--------+
| 1 | 2 | 3 |
| testin | 2 | 2 |
| testing3 | 3 | 4 |
+----------+--------+--------+
如果第一行包含前两个字段中的字符串,有没有人能够了解哪些情况可能会导致第一行丢失?
谢谢,
答案 0 :(得分:1)
有一个名为csvOptions.skipLeadingRows的参数,用于指定"标题行的数量"在CSV文件中。
如果未指定skipLeadingRows
,BigQuery会尝试自动检测标题行的数量。手动将skipLeadingRows
设置为0应禁用此行为。