【问题标题】:How to load csv data which is control+A separated into bigquery如何将control+A分离的csv数据加载到bigquery中
【发布时间】:2016-12-22 20:46:56
【问题描述】:

我正在尝试加载一个 CSV 文件,该文件是 control+A 分隔成 bigquery。我为 bq load 命令的-F 参数传递的选项应该是什么?我尝试过的所有选项都导致加载时出错。

【问题讨论】:

  • 你尝试过的参数是什么,它们给出了什么错误?
  • 我从未听说过控制+分隔符。您可能希望使用不同的分隔符重新生成文件。 Control+a 通常代表全选。
  • 已经尝试过 \u0001、\x01,但都失败了,出现“字段分隔符必须是单个字符”错误。

标签: google-bigquery


【解决方案1】:

我猜想 Control+A 用于 OP 想要加载到 BigQuery 中的一些旧格式。另一方面,当难以选择任何常用的分隔符时,可以选择 Control+A。

我的建议是加载没有任何分隔符的 CSV 文件,因此整行将作为一个字段加载

假设加载到 TempTable 中的行如下所示,只有一个名为 FullRow 的列。

 'value1^Avalue2^Avalue3'   

其中 ^A 是“不可见”字符

因此,在您将文件加载到 BigQuery 之后 - 现在您可以将其解析为单独的列并将其写入最终表格,如下所示

SELECT
  REGEXP_EXTRACT(FullRow, r'(?:\w*\x01){0}(\w*)') AS col1,
  REGEXP_EXTRACT(FullRow, r'(?:\w*\x01){1}(\w*)') AS col2,
  REGEXP_EXTRACT(FullRow, r'(?:\w*\x01){2}(\w*)') AS col3
FROM TempTable  

上述方法已确认有效,因为我多次使用此方法。适用于旧版和标准 SQL

【讨论】:

  • @amareshwari - 你有机会尝试上述方法吗?
  • 如何加载没有分隔符的文件?只需定义一个自定义分隔符: bq load --field_delimiter SomeStringThatDoesNotExistInMyFile?
猜你喜欢
  • 1970-01-01
  • 2018-09-02
  • 2020-01-17
  • 2018-12-27
  • 1970-01-01
  • 2021-08-18
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
相关资源
最近更新 更多