BigQuery创建表报语法错误:Expected ")" or "," 如何解决?
解决BigQuery创建表时的语法错误问题
这个错误的核心原因是BigQuery不支持在字符串类型后指定长度参数——不管是Standard SQL还是Legacy SQL模式,都不允许VARCHAR(18)这种带括号长度的写法,这和传统关系型数据库(比如MySQL、Oracle)的语法逻辑不一样。
BigQuery的字符串类型是无长度限制的,你只需要用STRING类型(VARCHAR其实是STRING的别名,但同样不能加长度约束)来定义字段即可。
修正后的SQL语句
Standard SQL模式(推荐使用)
CREATE TABLE TMSPCBTDZOP000 ( ART_ID STRING, LND_ID STRING, ART__BEZ STRING, ART_ANZ_ID STRING );
Legacy SQL模式(如果必须使用)
Legacy SQL同样不支持带长度的字符串类型定义,写法和标准SQL一致:
CREATE TABLE TMSPCBTDZOP000 ( ART_ID STRING, LND_ID STRING, ART__BEZ STRING, ART_ANZ_ID STRING );
额外说明
如果你的业务需要限制字符串长度(比如保证ART_ID不超过18个字符),BigQuery无法在表结构层面直接实现,但可以通过以下方式间接约束:
- 插入数据时使用
SUBSTR(your_value, 1, 18)来截断到指定长度 - 创建表时添加检查约束(仅Standard SQL支持):
CREATE TABLE TMSPCBTDZOP000 ( ART_ID STRING CHECK(LENGTH(ART_ID) <= 18), LND_ID STRING CHECK(LENGTH(LND_ID) <= 3), ART__BEZ STRING CHECK(LENGTH(ART__BEZ) <= 60), ART_ANZ_ID STRING CHECK(LENGTH(ART_ANZ_ID) <= 18) );
不管是在MicroStrategy还是bq工具中执行,只要使用修正后的语句,就能解决这个语法错误问题。
内容的提问来源于stack exchange,提问作者mkasting
相关产品推荐
相关产品推荐

