Как переместить таблицу результатов DB2 SQL в физический файл? - PullRequest
4 голосов
/ 13 ноября 2011

Я хотел бы получить таблицу результатов из оператора SELECT, а затем переместить ее в физический файл.

Я надеялся использовать (для W3Schools ):

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

К сожалению, согласно Руководству IBM (справочник по DB2 for i SQL)

Оператор SELECT INTO создает таблицу результатов, состоящую из большинство одной строки и присваивает значения в этой строке переменным.

Итак, я подумал, может быть, я мог бы использовать:

Оператор INSERT вставляет строки в таблицу или представлениеСуществует три формы этого оператора:
1. Форма INSERT с использованием полная выборка используется для вставки одной или нескольких строк в таблицу или представление с использованием значений из других таблиц или представлений.

К сожалению, это не работает для меня.

INSERT INTO <tablename>
FROM ( SELECT (*) FROM <querytableA>
       UNION
       SELECT (*) FROM <querytableB>)

Я могу переместить таблицу результатов в физический файл, но для этого мне нужно объявить курсор, а затемс do … while записью в физический файл, по одной записи за раз.Я считаю это уродливым и нелегким и надеялся использовать оператор SELECT INTO или INSERT INTO.

Пожалуйста, помогите мне «сбросить» таблицу результатов в физический файлс одним элегантным оператором.

ОС: IBM i v6.1
База данных: DB2

Ответы [ 2 ]

8 голосов
/ 13 ноября 2011

Если вы хотите создать таблицу автоматически, вы также можете использовать следующую форму:

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

Обратите внимание, что вы можете создать представление для запроса для динамического построения набора результатов по требованию. Затем на представление можно ссылаться из любого HLL в виде логического файла:

CREATE VIEW new_table_name
AS SELECT * FROM <querytableA>
   UNION SELECT * FROM <querytableB>
3 голосов
/ 13 ноября 2011

Вот правильный синтаксис:

INSERT INTO <dest_table> 
Select * FROM <querytableA>
UNION
Select * FROM <querytableB>

Чтобы это работало, <dest_table> должен уже существовать и иметь столбцы, совместимые со столбцами в <querytableA> и <querytableB>.

См. " Вставка строк с помощью оператора select " для получения дополнительной информации.

...