CTAS COPY INTO 的输出

Posted

技术标签:

【中文标题】CTAS COPY INTO 的输出【英文标题】:CTAS the output from COPY INTO 【发布时间】:2019-03-14 12:21:23 【问题描述】:

copy into 命令返回an output dataset。

CTAS 可以根据查询结果创建表。

将两者结合起来,我们希望将加载的文件列表放入一个新表中。

CREATE TABLE MY_LOADED_FILES
AS
COPY INTO mytable
FROM @my_int_stage;

但是,这会返回:

SQL 编译错误:位置 0 处的语法错误第 3 行意外“复制”。

我做错了什么?

【问题讨论】:

【参考方案1】:

不幸的是,您似乎不能将COPY INTO 语句放在另一个语句中。但是有一种方法可以做到这一点,方法是使用result_scan 函数返回上一个查询的结果。

copy into test_database.public.test_table from @my_int_stage;

create temporary table test_database.public.test_table_results as (
  select * from table(result_scan(LAST_QUERY_ID()))
);

当然,您需要确保第二个查询与复制语句在同一会话中运行,并且它直接在复制语句之后运行。或者,您可以将查询 ID 与 result_scan 一起使用。

如果您想查看加载了哪些文件,为什么不直接查看表格的copy_history?

【讨论】:

result_scan 将完成这项工作!我想确切地知道进程加载了哪些文件

以上是关于CTAS COPY INTO 的输出的主要内容,如果未能解决你的问题,请参考以下文章

HiveQL/SQL:CREATE TABLE AS SELECT (CTAS) 和 CREATE EXTERNAL TABLE + INSERT INTO 有啥区别?

MySQL select into outfile /tmp 没有输出

sas:proc sql select into 有多个输出

使用 insert into select 将源列添加到输出子句

通过 JDBC 与 COPY_INTO + GET 批量卸载雪花数据

COPY INTO 雪花命令的语法错误