【问题标题】:Oops! used a reserved word to name a column哎呀!使用保留字命名列
【发布时间】:2013-09-25 04:43:22
【问题描述】:

我制作了一个 bigquery 表,其中有一列名为“row”(不带引号)... 呵呵!现在,如果我引用该列,我的 sql 将无法编译:

SELECT row, etext FROM [hcd.hdctext] LIMIT 1; =ERROR"

我没有看到“ROW”作为 GQL 中的保留字...

我看到在某些系统中,您可以使用反引号解决这个问题:

SELECT `row`, etext FROM [hcd.hdctext] LIMIT 1;

(Using reserved words in column names)

有什么方法可以在 bigquery 中做同样的事情吗?否则我将不得不重新上传我的 200M 数据并重新开始。似乎更改字段名称不会是一个大功能。但我对数据的存储方式很幼稚。

谢谢!

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    BigQuery 旧版 SQL 使用 [] 作为引号字符。 BigQuery 标准 SQL 使用反引号。

    因此,对于旧版 SQL,只需使用

    SELECT [row], etext from [hcd.hdctext]
    

    如果你想永久重命名它,目前没有办法做到这一点,但你可以在查询中重命名它并保存结果......只需使用

    SELECT [row] as newname, .... FROM [hcd.hdctext]
    

    并指定“允许大结果”和目标表名称。

    【讨论】:

    • 完成!我永远不会发现...谢谢!
    • 作为记录 - 在 StandardSQL 语法中,您将使用反引号 ` 而不是方括号。
    • 如果该列是重复字段,则反引号没有帮助。有人解决了这个问题吗?
    • 另一个“利基”缓存:如果列是 STRUCT 的一部分,那么反引号会有所帮助。
    【解决方案2】:

    DOCS - CTRL-F "括号",它会带你直接进入文档中的段落。

    这已经晚了很多年,但根据Chris 的建议,这里有一个文档链接供将来参考。我无法将其作为直接回复发布,但问题已被标记为很久以前回答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多