如何使用pl / sql从多个表中获取数据

时间:2015-01-08 10:36:15

标签: sql oracle oracle10g spool

我有10个国家的10张桌子。每个表格对所有国家/地区都有两个相同的列。

我想一次从10个表中获取数据,并且获取的数据应该保存在文本文件中。即每个表数据应保存在每个文本文件中。

下面是表格说明。所有表都一样。

   Name                                     Null?    Type

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

请帮助我做到这一点。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您不需要PL/SQL。使用SQLUNION ALLSPOOL中执行此操作,以便从单个文件中的所有10个表中获取数据。否则,为每个select语句设置10个不同的文件。

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

这将在单个文件中生成所有表格数据。

  

,每个表数据都应保存在每个文本文件中。

只需在每张桌子上执行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