sql - 如何将 DB2 SQL 结果表移动到物理文件中?

标签 sql db2 ibm-midrange rpgle

我想从 SELECT 语句中获取结果表,然后将其移动到物理文件中。

我希望使用(根据 W3Schools ):

SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename 

不幸的是,根据 IBM 手册(DB2 for i SQL 引用)

The SELECT INTO statement produces a result table consisting of at most one row, and assigns the values in that row to variables.



所以我想也许我可以使用:

The INSERT statement inserts rows into a table or view There are three forms of this statement:
1. The INSERT using fullselect form is used to insert one or more rows into the table or view using values from other tables or views.



不幸的是,它似乎对我不起作用。
INSERT INTO <tablename>
FROM ( SELECT (*) FROM <querytableA>
       UNION
       SELECT (*) FROM <querytableB>)

我能够将结果表移动到物理文件中,但要做到这一点,我必须声明一个游标,然后使用 do … while 写入物理文件,一次一条记录。我认为这个 丑陋和不优雅的 并且希望能够使用 SELECT INTOINSERT INTO 语句。

请帮我用一个优雅的语句将结果表“转储”到一个物理文件中。

操作系统:IBM i v6.1
数据库:DB2

最佳答案

如果要自动创建表,还可以使用以下形式:

CREATE TABLE new_table_name 
AS (SELECT * FROM <querytableA> 
    UNION SELECT * FROM <querytableB>) WITH DATA

请注意,您可以在查询上创建 View 以根据需要动态构建结果集。然后可以从任何 HLL 作为逻辑文件引用该 View :
CREATE VIEW new_table_name
AS SELECT * FROM <querytableA>
   UNION SELECT * FROM <querytableB>

关于sql - 如何将 DB2 SQL 结果表移动到物理文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8111247/

相关文章:

mysql - 根据表中是否存在 FK 获取表 S 的行数

gradle - 在 IBM i 上使用 Gradle 实现 RPGLE 的部署自动化

sql - 能否使用 SQL 查询 AS/400 逻辑文件的 Select/Omit 条件?

hadoop - 通过 SQOOP 连接到 DB2 时出现连接管理器错误

node.js - 如何使用 Node JS 连接 DB2 SQL 数据库?

ibm-midrange - 在 AS400 中的程序之间传递可选参数

SQL:从两个表查询,不能将组保留在单行中

MySQL SELECT FROM a relation table WHERE 他们有相同的亲戚

mysql - 寻找一个选项来比较sql文件和csv格式的txt文件的数据

Python 和 IBM DB2 : UnicodeDecodeError