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 子句不允许错误的主要内容,如果未能解决你的问题,请参考以下文章
DB2 - 错误“不允许使用“WITH ISOLATION USE AND KEEP”子句”
简单选择给了我:PLS-00428:需要一个 INTO 子句[重复]
如果语句包含没有 INTO 子句的 OUTPUT 子句,则 DML 语句不能有任何启用的触发器