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 导出是不是为列名保留大写/小写?的主要内容,如果未能解决你的问题,请参考以下文章

将 BigQuery 结果导出为 Avro 或 JSON

BigQuery 下载或导出为 JSON 不考虑类型

通过 Google BigQuery API 将查询结果导出为 JSON

BigQuery json 特殊字符 UI 导出问题

是否有任何特定符号用于为 BigQuery 指定列名?

在 BigQuery 的列名中包含特殊字符?