web-dev-qa-db-ja.com

redshiftで一時テーブルを作成して呼び出す方法

一時テーブルを作成し、この一時テーブルをredshiftで呼び出したいですか?これを試しましたが、エラーメッセージが表示されます。

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

select * from #a

「エラー:42P01:リレーション「#a」は存在しません」

6
user3769827

以下のコマンドを使用してテーブルテーブルを作成してください。

  CREATE TEMP TABLE temp_table_name ....

これが完了したら、以下のようにselectクエリを使用します

  select * from temp_table_name

一時テーブルは、テーブルを作成したセッションの間のみ存在します。

5

この問題は私にもしばらく悩まされていたので、少し前に質問されたにもかかわらず、解決策を投稿しました。解決策は、使用しているツールにあります。私の場合はAginityです。解決する方法は2つあります。

  • 1つのクエリウィンドウと1つのクエリセッションの一時的な解決策:[オプション]-> [現在のクエリオプション]-> [実行間で接続を開いたままにする]チェックボックスをクリックします。
  • すべてのクエリウィンドウとすべてのセッションに対するより永続的なソリューション:[ツール]-> [オプション]-> [クエリアナライザー]-> [接続処理]の下の[実行間で接続を開いたままにする]を選択します。

Aginityを使用していない場合は、ツールで同様の設定を探してください。

うまくいけば、私はこれで誰かを助けることができました!

2
Nisheeth Singh

使用する create table as の代わりに select into

次のように一時テーブルを作成します。

create table #temp_table as
<subquery>

一時テーブルを次のようにクエリします。

select * from #temp_table

詳細については、以下を参照してください: redshiftでテーブルを作成する方法

0
xanjay

基本的に、「into」キーワードを使用して、選択クエリの結果を一時テーブルに格納しようとしています。これは簡単に行うことができます。テーブル名の前にdouble hash(##)を使用する必要があります。したがって、クエリは次のようになります。

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

select * from ##a;
0
Saurabh Gupta

使用できます

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
Ram