BigQuery加载-控制字符作为分隔符

Yan*_*ler 1 google-bigquery

我们有要加载的文件,其中字段值由“单位分隔符”分隔。0x1f
根据doc,如果不可打印,则应使用UTF-8进行编码。

使用bqCLI,我尝试将-F参数传递U+001F给毫无用处:BigQuery error in load operation: Field delimiter must be a single character, found:"U+001F"。带或不带引号的`\ x1f'
都不运气0x1F

我的编码是否错误bq,或者是API中的错误?

编辑
与资源管理器一起玩后,发现它是不喜欢定界符的API。除了可打印的分隔符,您还可以使用\t未记录的\b(退格键)和\f(表单字段)。
tab可以是自由格式文本字段中有效的用户输入字符,因此我们需要使用控制字符(从“ unit sep”转换后)

EDIT2:
请注意,\f作为分隔符不做工精细通过API直接而不是bqCLI( Field delimiter must be a single character, found:"\f")。

Yan*_*ler 5

实际上,受GCP支持的支持,这在Linux上有效:

bq load --autodetect --field_delimiter=$(printf '\x1f') [DATASET].[TABLE] gs://[BUCKET]/simple.csv
Run Code Online (Sandbox Code Playgroud)

在Windows上,在命令行上返回/生成控制字符并不是那么简单。如果使用PowerShell,则更加容易。

我同意@Felipe,这是目前该bq CLI工具的一种局限性,但是我可以很容易地在源代码中使用一个.decode('utf-8')以字节为单位的自变量来固定该限制,以便

 --field_delimiter=\x1f 
Run Code Online (Sandbox Code Playgroud)

可以在任何平台上按原样工作。

希望关闭bq CLI team将考虑增强。