我们有要加载的文件,其中字段值由“单位分隔符”分隔。0x1f
根据doc,如果不可打印,则应使用UTF-8进行编码。
使用bq
CLI,我尝试将-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直接而不是bq
CLI( Field delimiter must be a single character, found:"\f"
)。
实际上,受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
将考虑增强。
归档时间: |
|
查看次数: |
707 次 |
最近记录: |