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 将源列添加到输出子句