google-bigquery - 如何强制 BigQuery 自动检测包含所有字符串的架构?
问题描述
有没有办法--autodect
在 BigQuery 中使用强制所有新字段被视为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' '333933383335333833393333333333383338' '2017-02-01 05:13:59' '29' '333733333330333033323339333933313335333333303333333433393336' '333333353331333933363338333033373333333833323338333733323330' '3333343234313434' 'R' 'LC' '100 ' '-70.2' '-31.34' 'HSFC310' 'WOMT24I' '146' '1' '05'
想法?
解决方案
自动检测模式样本最多前 100 行,因此如果列包含最多前 100 行的所有整数,则数据类型将为整数。--qoute 标志的目的是用指定的值将列括起来。
例子:
Sample csv data:
col1, col2
1, "2"
如果您不指定 --quote,则默认情况下它将是"。 col2 的数据类型将是 Integer,值将是 2。
如果您指定的 --quote 不是默认的",那么它将用该值括起数据。例如:--quote="'",col2 将是字符串类型,数据值将是“2”(双引号本身将是数据值的一部分)
到目前为止,您不能强制自动检测架构使所有列都具有某种数据类型,否则,它毕竟不会自动检测。您可能需要提交一个功能请求,为 bq 加载(甚至在 UI 中)添加另一个标志,以使某些列具有某种数据类型(例如,我想将列 #1、2、15、100、xxx 设为是字符串或所有列都应该是字符串/整数/数字等...)。
推荐阅读
- python - 递归上传目录(其中包含目录)到 FTP
- ionic-framework - 在生产构建离子3中没有获得本地通知声音
- javascript - 修复javascript中的变量增量
- redux - 使用 react-redux 如何在异步更新调用后端之前实现即时 UI,如果更新不成功则回滚?
- c# - 如何在 C# 中访问 JSON 对象的结果
- node.js - 带有node.js的对话流你如何切换意图
- php - 创建 if 块的问题
- c# - SQL 联系应用程序未正确响应服务器
- jquery - 如何通过表单发布方法请求使用 api 密钥?
- mysql - 配置 MySQL 的 mysqlsh 默认接受 SQL 并连接