You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CREATE MULTISET TABLE批量插入多行到新表时遇Teradata语法错误

Teradata多行INSERT VALUES语法错误(3706)解决方法

问题重现

执行以下Teradata SQL时触发3706语法错误:

DROP TABLE table_name;

-- Create the multiset table to store product line owner information
CREATE MULTISET TABLE table_name (
    Product VARCHAR(100),
    Owner VARCHAR(100),
    Email VARCHAR(100)
);

-- Insert sample data into the table
INSERT INTO table_name (Product, Owner, Email)
VALUES ('Product', 'Owner Name', 'owner.name@email.com'),
       ('Product1', 'Owner Name1', 'owner1.name@email.com');

-- Retrieving data from the table
SELECT * FROM table_name;

错误信息:

[Teradata Database] [3706] Syntax error: expected something between ')' and ','.

仅插入单行数据时语句可正常执行。

问题原因

Teradata不支持标准SQL中VALUES子句后用逗号分隔多行数据的写法,这是导致语法错误的直接原因。

解决方案

提供两种可行的多行插入方式:

方式1:使用多个独立INSERT语句(适合少量数据)

DROP TABLE table_name;

CREATE MULTISET TABLE table_name (
    Product VARCHAR(100),
    Owner VARCHAR(100),
    Email VARCHAR(100)
);

INSERT INTO table_name (Product, Owner, Email)
VALUES ('Product', 'Owner Name', 'owner.name@email.com');

INSERT INTO table_name (Product, Owner, Email)
VALUES ('Product1', 'Owner Name1', 'owner1.name@email.com');

SELECT * FROM table_name;

方式2:使用UNION ALL构造数据集插入(适合大量数据,效率更高)

DROP TABLE table_name;

CREATE MULTISET TABLE table_name (
    Product VARCHAR(100),
    Owner VARCHAR(100),
    Email VARCHAR(100)
);

INSERT INTO table_name (Product, Owner, Email)
SELECT 'Product', 'Owner Name', 'owner.name@email.com'
UNION ALL
SELECT 'Product1', 'Owner Name1', 'owner1.name@email.com';

SELECT * FROM table_name;

验证

执行修改后的语句后,SELECT * FROM table_name;会正常返回两行测试数据。

内容的提问来源于stack exchange,提问作者user21077255

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 02:33:16