0

我正在尝试使用 bigrquery 的 bq_table_load() 命令将制表符分隔的 csv 文件从谷歌存储移动到 bigrquery。它可以工作,但不会自动识别列名。以交互方式(即在 bigquery 云控制台中)做同样的事情效果很好。比较两个作业的作业元数据(R 诱导作业与云控制台作业),我注意到 R 作业的列分隔符未设置为 TAB。尽管我在我的命令调用中包含了这个;例如如下:

bq_table_load(<x>,<uri>, fieldDelimiter="Tab",    source_format = "CSV", autodetect=TRUE)

我尝试了各种变体...似乎没有任何效果(即 R 作业将始终设置逗号分隔符)...这是我尝试过的一些变体:

bq_table_load(<x>,<uri>, field_delimiter="Tab",    source_format = "CSV", autodetect=TRUE)

bq_table_load(<x>,<uri>, field_delimiter="\t",    source_format = "CSV", autodetect=TRUE)

bq_table_load(<x>,<uri>, field_delimiter="tab",    source_format = "CSV", autodetect=TRUE)

有什么建议么?

4

1 回答 1

0

您可以使用模式文件定义模式,示例如下:-

示例 BQ 加载命令,其中 '$schema_dir/$TABLENAME.json' 表示模式文件:-

   bq --nosync load --source_format=CSV --skip_leading_rows=3 --allow_jagged_rows=TRUE --max_bad_records=10000 \
      --allow_quoted_newlines=TRUE  $projectid:$dataset.$TABLENAME \
       $csv_data_path/$FILENAME $schema_dir/$TABLENAME.json

示例模式文件

[
  {
    "mode": "NULLABLE",
    "name": "C1",
    "type": "STRING"
  }
]
于 2021-02-02T13:50:12.913 回答