Azure Synapse Analytics表插入多行值遇语法错误,求排查
Azure Synapse Analytics插入数据时的语法错误解决方法
我在Azure Synapse Analytics中使用以下脚本成功创建了表:
CREATE TABLE [PS].[BCGrps]( [OC] varchar (80) NOT NULL, [BID] int NOT NULL, [Active] BIT NOT NULL, [UniAccess] BIT NOT NULL, [Indus] BIT NOT NULL )
然而当我尝试执行以下插入语句时:
INSERT INTO [PS].[BCGrps](OC,BID,Active,UniAccess,Indus) VALUES ('xx',200,1,1,1), ('xxx',202,1,0,1), ('xxxxx',2000,1,0,1), ('yy',2030,1,0,0), ('zz',2002,0,0,1)
收到错误提示:
Parse error at line: 3, column: 22: Incorrect syntax near ','.
错误原因及解决方法
- 核心原因:若你使用的是Azure Synapse的无服务器SQL池,它不支持
VALUES子句后直接跟多行数据的批量插入语法,这是无服务器池与专用SQL池的语法差异之一。 - 解决方案:将多行
VALUES写法替换为UNION ALL拼接查询的方式,修改后的插入语句如下:
INSERT INTO [PS].[BCGrps](OC,BID,Active,UniAccess,Indus) SELECT 'xx',200,1,1,1 UNION ALL SELECT 'xxx',202,1,0,1 UNION ALL SELECT 'xxxxx',2000,1,0,1 UNION ALL SELECT 'yy',2030,1,0,0 UNION ALL SELECT 'zz',2002,0,0,1
- 若使用的是专用SQL池,检查语句是否存在多余逗号或隐藏字符:你的原语句语法本身是正确的,可能是输入时不小心引入了不可见的特殊字符,建议重新复制或手动输入语句后再次尝试。
内容的提问来源于stack exchange,提问作者brins
相关产品推荐
相关产品推荐

