bigrquery bq_table_load 带有制表符分隔符的 csv 文件

时间:2021-02-02 12:31:20

标签: csv google-bigquery bigrquery

我正在尝试使用 bigrquery 的 bq_table_load() 命令将制表符分隔的 csv 文件从谷歌存储移动到 bigrquery。它可以工作,但不会自动识别列名。以交互方式(即在 bigquery clould 控制台中)做同样的事情效果很好。比较两个作业(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)

有什么建议吗?

1 个答案:

答案 0 :(得分: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"
  }
]