BigQuery JSON 导出是不是为列名保留大写/小写?
Posted
技术标签:
【中文标题】BigQuery JSON 导出是不是为列名保留大写/小写?【英文标题】:Does BigQuery JSON export keep uppper/lower case for column names?BigQuery JSON 导出是否为列名保留大写/小写? 【发布时间】:2018-09-11 04:08:39 【问题描述】:BigQuery 的列名不区分大小写。 (https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical)
据我尝试(如下),BigQuery 似乎在导出时为列名保留大写/小写。
$ bq show --format=sparse sandbox.case_test
Last modified Schema Total Rows Total Bytes Expiration Time Partitioning Labels
----------------- ------------------ ------------ ------------- ------------ ------------------- --------
11 Sep 12:46:02 |- small: string 1 12
|- LARGE: string
此表有大写和小写名称。
$ bq extract --destination_format=NEWLINE_DELIMITED_JSON sandbox.case_test gs://sandbox/case_test.json
$ gsutil cat gs://sandbox/case_test.json
"small":"hoge","LARGE":"buzz"
有谁知道任何提到这种行为的文件?
【问题讨论】:
【参考方案1】:虽然列 references 区分大小写,但元数据中 stored 的列名称保留大小写。我不认为有文档说“BigQuery 存储您提供的原始列名称并将它们用作导出的字段名称”,但我可以确认它确实如此。
【讨论】:
【参考方案2】:列名不区分大小写,这意味着您可以在 SELECT 语句中引用列时不必担心大小写。例如
#standardSQL
SELECT small, LARGE
FROM `project.sandbox.case_test`
和
#standardSQL
SELECT sMAll, LarGE
FROM `project.sandbox.case_test`
将分别产生没有任何失败的结果
Row small LARGE
1 hoge buzz
Row sMAll LarGE
1 hoge buzz
注意,不区分大小写的列名并不意味着它们将在导出期间更改 - 而是将使用架构中设置的名称我怀疑这在文档中的任何地方都特别反映,因为它是我会认为很明显
【讨论】:
以上是关于BigQuery JSON 导出是不是为列名保留大写/小写?的主要内容,如果未能解决你的问题,请参考以下文章