INTO 子句不允许错误

Posted

技术标签:

【中文标题】INTO 子句不允许错误【英文标题】:INTO clause is not allowed error 【发布时间】:2015-04-30 21:04:22 【问题描述】:

我正在尝试对 teradata 表执行简单的 SQL select into 语句,并遵循我找到的 here 语法。声明如下:

 select *  into DBNAME.account_backup  from DBNAME.account; 

当我运行此代码时,我收到以下错误:

选择失败。 3706: 语法错误:不允许使用 INTO 子句

这两个表具有完全相同的格式(我复制了创建第一个表的 SQL 并将其粘贴到创建第二个表,只更改了名称)。

有什么想法吗?

非常感谢

【问题讨论】:

【参考方案1】:

SELECT INTO 是 SQL Server 语法,在标准 SQL 语法中,它仅用于存储过程中,将返回单行的查询结果放入变量中。

这是 Teradata 中的等效查询:

create table DBNAME.account_backup as DBNAME.account with data;

【讨论】:

create table .. as select ..也在SQL标准中定义 我在这里的第一列是一个身份列,我收到错误“CREATE TABLE AS 目前不支持身份列”......谷歌对此没有太大帮助;有任何想法吗?非常感谢! 没有解决方法,CREATE TABLE AS 不支持标识列(大多数 DWH 不使用 IDENTITY,这通常是从其他 DBMS 移植的遗留物)。 您可以将表创建为<tablename> without data 以获取结构。然后你可以insert into <new table name> (<specify column list, not including the identity column>) as select <same columns without identity> from <original table> 有没有办法复制那个身份列?我确实需要那个。谢谢!【参考方案2】:
.export data file=output.txt;
.set recordmode off;
//query
.export reset;

【讨论】:

OP 询问的是如何复制表格,而不是如何在 BTEQ 中导出表格。 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。

以上是关于INTO 子句不允许错误的主要内容,如果未能解决你的问题,请参考以下文章

如何修复此 SELECT 语句中的错误 INTO 子句

DB2 - 错误“不允许使用“WITH ISOLATION USE AND KEEP”子句”

简单选择给了我:PLS-00428:需要一个 INTO 子句[重复]

如果语句包含没有 INTO 子句的 OUTPUT 子句,则 DML 语句不能有任何启用的触发器

使用 UNION ALL 查询在 FROM 子句中出现语法错误

错误:当前子查询表达式仅允许作为配置单元中的 where 子句谓词