在BigQuery中是否可以使用--autodect
来强制将所有新字段都视为strings
?
问题如下:我有一个csv
文件,中间用\t
分隔,所有字段都用'67.4'
引用。现在,如果我仅提供一个架构,则bq load
会由于我无法理解的原因而中断。如果我执行bq load --autodect
,则可以正常运行,但仍会引用这些值。现在,我试图做
bq load --autodetect --quote="'" --max_bad_records=10000
--field_delimiter="\t" --source_format=CSV
repo:abc.2017 gs://abc/abc_2017-*.csv.gz
但是现在它打破了王室
- gs://abc/abc_2017-04-16.csv.gz: Error while reading data,
error message: Could not parse '67.4' as int for field
int64_field_35 (position 35) starting at location 2138722
这里是一行,字段又由制表符分隔:
'333933353332333633383339333033333337''31373335434633''pre''E''1''333933383335333833393333333333338338''2017-02-01 05:13:59''29''333733333330333033323323339333933313335333333333333333433393336''33333335333133393336333833303337333333333333333333333333373323330''3333343234313434''R''LC''100''-70.2''-31.34''HSFC310''WOMT24I''146''1
想法?
答案 0 :(得分:1)
Auto detect模式最多对前100行进行采样,因此,如果该列包含前100行的所有整数,则数据类型将为整数。 --qoute flag的目的是用指定的值括住该列。
示例:
Sample csv data:
col1, col2
1, "2"
如果未指定--quote,则默认情况下为“ 。col2的数据类型为Integer,值为2。
如果您指定--quote而不是默认的“ ,则它将用该值将数据括起来。例如:--quote =”'“,col2将为字符串类型和数据值将为“ 2” (双引号本身将成为数据值的一部分)
到目前为止,您不能强制自动检测模式使所有列都具有特定的数据类型,否则,最终将无法自动检测。您可能要提交功能请求,以添加另一个用于bq加载的标志(甚至在UI中),以使某些列具有某些数据类型(例如,我希望将列#1、2、15、100,xxx设置为为String或所有列均应为String / Integer / Numeric等)。