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

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

 select *  into DBNAME.account_backup  from DBNAME.account; 

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

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

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

有什么想法吗?

非常感谢

【问题讨论】:

    标签: sql teradata select-into


    【解决方案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 中导出表格。
    • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 2016-02-20
    相关资源
    最近更新 更多