我正在尝试使用 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)
有什么建议吗?
答案 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"
}
]