【问题标题】:Run multiple queries from 1 SQL file showing result in multiple tables从 1 个 SQL 文件运行多个查询,在多个表中显示结果
【发布时间】:2015-08-09 03:35:19
【问题描述】:

我有一组用于回归测试的查询。这些基本上是存储在不同文件中的选择语句。

File  Query
A      SELECT a ...
B      SELECT b ...
C      SELECT c ...

这意味着我必须打开多个文件并运行查询。是否可以将这些 SELECT 语句放在同一个文件中,但在不同的表和/或不同的结果集中显示结果?

我想要一个文件 D 显示不同表中 SELECT 语句 a、b 和 c 的结果。 (最好只包含文件 A、B、C,但我当然可以复制粘贴它)。这可能吗?如果有可能,那我该怎么做?

【问题讨论】:

    标签: sql teradata


    【解决方案1】:

    您可以将所有选择查询附加到一个输出文件中。将以下代码放入 .bat 文件并使用 bcp 命令。

    select * from table1 >> textfile1.txt 
    select '================' >> textfile1.txt
    select * from table2 >> textfile1.txt 
    select '================' >> textfile1.txt
    select * from table3 >> textfile1.txt 
    select '================' >> textfile1.txt
    

    【讨论】:

      【解决方案2】:

      将查询复制并粘贴到一个文件中并执行以下操作是最简单的:

      create table temp_db.table_name_a as(
          select * from queryATable
      )with data primary index(indexes);
      
      create table temp_db.table_name_b as(
          select * from queryBTable
      )with data primary index(indexes);
      
      create table temp_db.table_name_c as(
          select * from queryCTable
      )with data primary index(indexes);
      
      create table temp_db.combined_table_D as(
      
          select fields, 'tableAResult Set' as source from temp_db.table_name_a
      
      union all
      
          select fields, 'tableBResult Set' as source from temp_db.table_name_b
      
      union all 
      
          select fields, 'tableCResult Set' as source from temp_db.table_name_c
      
      )with data primary index(indexes);
      

      【讨论】:

      • 即使我只创建一行,它也会显示“数据库中没有更多空间”。我想这意味着我不能创造任何东西。无论如何不使用创建表来做到这一点?
      • 您可以使用 volatile 表而不仅仅是表。但是,带走索引并用提交时没有主索引的数据替换保留行;。如果您无法创建任何类型的表,则应要求 DBA 授予您更多访问权限。
      • 或者,您可以只运行上面示例中最后一个查询中的代码。以选择字段开头并以 table_name_c 结尾。但是,如果查询很长,这可能会非常混乱
      【解决方案3】:

      如果不知道您可以使用哪些工具,这很难回答。

      不过,获得多个答案集的最简单方法之一是使用 SQL 助手。

      例如:在您的查询窗口中输入或粘贴以下内容

      SELECT * FROM dbc.DBCInfo;
      SELECT * FROM dbc.DBCInfo;
      SELECT * FROM dbc.DBCInfo;
      

      在您的菜单中选择文件 -> 导出结果

      按 F5(或绿色的脚)它会提示您输入位置和文件名,输入您想要的位置和文件名。

      然后它将保存如下结果 发布,14.10.02.11 版本,14.10.02.12 语言支持模式,标准

       --------------------------------------------------------------------------------
      
       RELEASE,14.10.02.11
       VERSION,14.10.02.12
       LANGUAGE SUPPORT MODE,Standard
      
       --------------------------------------------------------------------------------
      
       RELEASE,14.10.02.11
       VERSION,14.10.02.12
       LANGUAGE SUPPORT MODE,Standard
      

      您还可以在选项中设置保存每个查询等的 sql。

      希望这会有所帮助。

      【讨论】:

        【解决方案4】:

        在 SQL 开发人员中,一次运行多个查询并在 1 个结果中而不是多个选项卡中获取结果的最简单方法是,选择要运行的所有查询,而不是运行“运行语句”,运行“运行脚本” " 或 (F5)。这将返回如下结果:


        这里查询结果


        这里查询结果


        【讨论】:

          【解决方案5】:

          如果您想要多个响应,您可以创建一个存储过程。

          使用存储过程,一次调用即可返回多个数据集:

          CREATE PROCEDURE Foo     
          AS   
              SELECT * AS Table1
              SELECT * AS Table2;
              SELECT * AS Table3;
          GO
          
          EXECUTE Foo;
          

          MSDN stored procedure

          【讨论】:

            猜你喜欢
            • 2013-09-01
            • 2023-03-11
            • 1970-01-01
            • 1970-01-01
            • 2019-08-27
            • 1970-01-01
            • 2013-04-08
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多