2015-01-08 4 views
0

У меня есть 10 таблиц для 10 стран. Каждая таблица имеет две одинаковые колонки для всех стран.Как получить данные из нескольких таблиц с использованием pl/sql

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

Ниже приведено описание таблицы. для всех таблиц.

Name          Null? Type 

MSISDN         NOT NULL VARCHAR2(25) 
GREET_FILE_NAME          VARCHAR2(100) 

Просьба помочь мне сделать это. заранее спасибо.

ответ

0

Не требуется PL/SQL. Сделайте это в SQL, используя UNION ALL и SPOOL, чтобы получить данные из всех 10 таблиц в одном файле. Else, spool в 10 различных файлах для каждого из операторов select.

SELECT MSISDN, GREET_FILE_NAME FROM table_1 
    UNION ALL 
SELECT MSISDN, GREET_FILE_NAME FROM table_2 
    UNION ALL 
.... 
and so on for all 10 tables 
    UNION ALL 
SELECT MSISDN, GREET_FILE_NAME FROM table_10  

Чтобы избежать дубликатов, вы можете использовать UNION.

Чтобы создать файл с вашими выходными данными, используйте команду SPOOL в SQL*Plus.

Например,

spool <location> 
-- your select query here 
spool off; 

Вы можете даже обернуть его в script файл и просто запустить скрипт в SQL*Plus.

Например,

@test.sql 

Это будет генерировать все данные таблицы в одном файле.

i.e каждая таблица данных должна быть сохранена в каждом текстовом файле.

Просто выполните SELECT на каждом столе и SPOOL, как показано выше. Нет необходимости в UNI0N.

Например,

-- file 1 
spool text_1.csv 
SELECT MSISDN, GREET_FILE_NAME FROM table_1 
spool off; 

-- file 2 
spool text_2.csv 
SELECT MSISDN, GREET_FILE_NAME FROM table_2 
spool off; 
... 
and so on for all 10 tables