插入多行SQL Teradata

Boc*_*ean 6 sql teradata sql-insert

我正在创建一个volatile表并尝试向表中插入行.我可以上传一行如下...


create volatile table Example
(
    ProductID VARCHAR(15),
    Price DECIMAL (15,2)
)
on commit preserve rows;
et;

INSERT INTO Example
Values
('Steve',4);
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试上传多个时,我收到错误:

"语法错误:预期在')'和','之间."

INSERT INTO Example
Values
('Steve',4),
('James',8);
Run Code Online (Sandbox Code Playgroud)

dno*_*eth 5

正如戈登所说,Teradata不支持多行的VALUES(并且UNION ALL将因缺少FROM而失败。

您可以改用多语句请求(MSR):

INSERT INTO Example Values('Steve',4)
;INSERT INTO Example Values('James',8)
;
Run Code Online (Sandbox Code Playgroud)

如果是BTEQ作业,则在最后的分号后将插入作为一个块提交(当在同一行上有新命令开始时,它是MSR的一部分)。在SQL Assistant或Studio中,您必须使用F9代替提交F5


Gor*_*off 3

我认为 Teradata 不支持多行values语法。只需使用select

INSERT INTO Example(ProductId, Price)
WITH dual as (SELECT 1 as x)
    SELECT 'Steve' as ProductId, 4 as Price FROM dual UNION ALL
    SELECT 'James' as ProductId, 8 as Price FROM dual;
Run Code Online (Sandbox Code Playgroud)