如何在redshift中创建和调用临时表

问题描述 投票:0回答:5

我想创建一个临时表并在 redshift 中调用这个临时表?我已经尝试过这个,但收到一条错误消息。

select  top 10 * into #a from public.item_activity where item_act_timestamp < DATEADD(day,-1,getdate());

select * from #a

“错误:42P01:关系“#a”不存在”

temp-tables amazon-redshift
5个回答
13
投票

请使用以下命令创建表格:

  CREATE TEMP TABLE temp_table_name ....

完成后,使用如下选择查询

  select * from temp_table_name

临时表仅在您创建该表的会话期间存在。


6
投票

如果您不使用 Aginity 工具,请在工具中查找类似的设置。

这个问题也让我烦恼了一段时间,所以尽管这个问题是不久前提出的,但还是发布了解决方案。解决方案在于您使用的工具,在我的例子中是 Aginity,有 2 种方法可以解决:

  • 一个查询窗口和一个查询会话的临时解决方案:点击选项->当前查询选项->勾选“在执行之间保持连接打开”
  • 针对所有查询窗口和所有会话的更永久解决方案:单击“工具”->“选项”->“查询分析器”-> 在“连接处理”下选择“在执行之间保持连接打开”

希望我能够帮助别人!


3
投票

你可以使用

Create temporary table tbl_name as (Select * from abc)
--OR
create temporary table tmp_date_var AS
( SELECT '2017-04-01'::Date AS stdt,'2018-01-31'::Date AS enddt);

0
投票

使用

create table as
代替
select into

创建临时表为:

create table #temp_table as
<subquery>

查询临时表为:

select * from #temp_table

更多信息,请参阅:如何在 redshift 中创建表


-1
投票

您基本上是在尝试使用“into”关键字将选择查询的结果存储在临时表中。 这很容易做到。 您只需在表名前使用 double hash (##) 即可。 所以你的查询现在看起来像:

select top 10 * into ##a from public.item_activity where item_act_timestamp < DATEADD(day,-1,getdate());

select * from ##a;
© www.soinside.com 2019 - 2024. All rights reserved.