哎呀!使用保留字来命名列

wgw*_*wgw 12 google-bigquery

我创建了一个bigquery表,其中一列名为"row"(没有引号)... doh!现在,如果我引用该列,我的sql将无法编译:

SELECT row, etext FROM [hcd.hdctext] LIMIT 1; =ERROR"
Run Code Online (Sandbox Code Playgroud)

我没有在GQL中看到"ROW"作为保留字...

我在一些系统中看到你可以用反引号解决这个问题:

SELECT `row`, etext FROM [hcd.hdctext] LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

(使用列名中的保留字)

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

谢谢!

Jor*_*ani 16

BigQuery Legacy SQL []用作引用字符.BigQuery Standard SQL使用反引号.

因此,对于Legacy SQL,只需使用

SELECT [row], etext from [hcd.hdctext]
Run Code Online (Sandbox Code Playgroud)

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

SELECT [row] as newname, .... FROM [hcd.hdctext]
Run Code Online (Sandbox Code Playgroud)

并指定"允许大结果"和目标表名称.

  • 对于记录 - 在StandardSQL语法中,您将使用反引号`而不是方括号. (7认同)