大量查询负载 - 控制字符作为分隔符

问题描述 投票:0回答:2

我们所拥有的文件来加载其中字段值由“单位分隔符”分隔,0x1f 具体根据doc,如果不是可打印的,但应以UTF-8编码。

使用bq CLI,我试图通过与-FU+001F争论无济于事,但:BigQuery error in load operation: Field delimiter must be a single character, found:"U+001F"。 没有运气要么0x1F或'\ X1F,带或不带引号。

有我的编码错误的或者是它在bq一个bug,或API?

编辑: 与它不喜欢的分隔符的API资源管理器播放后证明。除了可打印的分隔符,你可以,但也未公开\t(退格键)和\b(表单字段)显然使用\ftab可以在一个自由格式的文本字段中输入有效的用户输入的字符,所以我们需要使用一个控制字符(从“单位月”转换后)

EDIT2 :: 需要注意的是\f作为分隔符通过API确实做工精细直接,但不是bq CLI(Field delimiter must be a single character, found:"\f")。

google-bigquery
2个回答
4
投票

其实,GCP支持礼貌,这在Linux上工作:

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

在Windows上,它不是简单的返回/生成的命令行控制字符。容易,如果你使用PowerShell。

我同意@Felipe,这是目前在bq CLI工具的限制,而是一个可以很容易地固定在源代码在我的脑海与以字节为单位的说法一.decode('utf-8'),使

 --field_delimiter=\x1f 

可以作为,是在任何平台上。

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


0
投票

你找到了CLI的局限性:它不会接受该API将所有字符。

作为EDIT2说,解决的办法是通过替代方法直奔API。

© www.soinside.com 2019 - 2024. All rights reserved.