【问题标题】:How to download multiple resultset in one go如何一次下载多个结果集
【发布时间】:2021-12-10 20:46:28
【问题描述】:

我想在 Snowflake 中运行多个查询并一次性提取结果...即为每个表中的前十行运行所有 SQL。我必须单独运行和下载每个,还是可以一次性完成?

【问题讨论】:

  • 您可以让存储过程将每个表中的 10 行以分隔、Parquet 或 JSON 文件的形式复制到一个阶段。这将最接近“一次性”,因为每个表的 DDL 会有所不同。

标签: sql snowflake-cloud-data-platform


【解决方案1】:

您可以使用联合来堆叠同一结果集中的表。联合要求你有相同的列数,所以我们可以在选择中插入空列。

您必须为每个后续表添加所需的尽可能多的“假”列,直到它 = 表中具有最多列的列数。

Select TOP 10 Col1, Col2, Col3, Col4, Col5 
FROM Table1
Union
Select TOP 10 Col1, Col2, Col3, Null as Col4, Null as Col5 
FROM Table2
Select TOP 10 Col1, Col2, Null as col3, Null as Col4, Null as Col5 
FROM Table3

你也可以用*替换真正的列,只列出假的列

Select TOP 10 Col1, Col2, Col3, Null as Col4, Null as Col5 
FROM Table2
Select TOP 10 *, Null as col3, Null as Col4, Null as Col5 
FROM Table3


Not sure if this will work in your specific SQL DB dialect.

【讨论】:

    【解决方案2】:

    SQL UNION 运算符 UNION 运算符用于组合两个或多个 SELECT 语句的结果集。

    UNION 中的每个 SELECT 语句必须具有相同的列数 列还必须具有相似的数据类型 每个 SELECT 语句中的列也必须具有相同的顺序 UNION 语法

    SELECT column_name(s) FROM table1
    UNION
    SELECT column_name(s) FROM table2;
    

    使用 UNION ALL 堆叠多个表 A. 在 SQL Server 中组合表的语法 语法很简单,我们将单个表的选择查询与 UNION 或 UNION ALL 结合起来:

    SELECT [EmpID]
      ,[Name]
      ,[LocationID]
      ,[Location]
      ,[Year]
      ,[Target]
    FROM [TargetShire]
    
    UNION
    
    SELECT [EmpID]
      ,[Name]
      ,[LocationID]
      ,[Location]
      ,[Year]
      ,[Target]
    FROM [TargetCentralMiddleEarth]
    

    因此我们收到了合并后的表格:

    SQL Server 中重复条目的处理

    如果您注意了,员工“Frodo B”的重复条目。上面的示例中缺少。这是因为“UNION”命令会删除重复值。

    如果我们也想拥有重复的条目,我们必须使用“UNION ALL”。语法与上例类似:

    SELECT [EmpID]
      ,[Name]
      ,[LocationID]
      ,[Location]
      ,[Year]
      ,[Target]
    FROM [TargetShire]
    
    UNION ALL
    
    SELECT [EmpID]
      ,[Name]
      ,[LocationID]
      ,[Location]
      ,[Year]
      ,[Target]
    FROM [TargetCentralMiddleEarth]
    

    参考: https://community.powerbi.com/t5/Community-Blog/Combine-multiple-tables-with-UNION-UNION-ALL-in-SQL-Server/ba-p/1696694

    【讨论】:

      猜你喜欢
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多