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)
正如戈登所说,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。
我认为 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)