簡體   English   中英

Athena SQL 從可變數量的表創建表

[英]Athena SQL create table from variable number of tables

我想從從 SELECT 查詢中獲得的變量多個表名創建一個表/視圖。
可以從多個已知表創建一個表,如下所示:

CREATE TABLE new_table AS
SELECT column_1, column_2
FROM clients_1, clients_2, ... clients_n;

要獲取表格列表,我可以使用以下內容:

SELECT DISTINCT table_name FROM information_schema.columns WHERE table_name like '%clients_%';

返回:

     table_name
1    clients_1
2    clients_2

如何將表名結果用作 CREATE TABLE FROM 子句中的列表?

我用 WITH 嘗試過這樣的事情:

WITH mytable AS 
  (SELECT DISTINCT table_name FROM information_schema.columns WHERE table_name like '%clients_%')
    CREATE TABLE new_table AS
    SELECT column_1, column_2
    FROM mytable;

但它大多不起作用。
即使這樣做,例如不使用 WITH 並選擇 * 列 -

CREATE TABLE new_table AS
SELECT *
FROM (SELECT DISTINCT table_name FROM information_schema.columns WHERE
table_name like '%clients_%');

new_table 只是 mytable/nested 查詢的副本。

想法?
謝謝!

我最終選擇了這樣的視圖:

CREATE OR REPLACE VIEW clients_all AS
  SELECT column_1, column_2 FROM client1
  UNION ALL
  SELECT column_1, column_2 FROM client2

缺點是每當添加新的 client_n 表時我都必須更新視圖,並明確指定表的名稱而不是從查詢中推斷它們,
但是我可能不得不將它分成兩個查詢,即使按照最初的意圖創建一個表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM