我有10个国家的10张桌子。每个表格对所有国家/地区都有两个相同的列。
我想一次从10个表中获取数据,并且获取的数据应该保存在文本文件中。即每个表数据应保存在每个文本文件中。
下面是表格说明。所有表都一样。
Name Null? Type
MSISDN NOT NULL VARCHAR2(25)
GREET_FILE_NAME VARCHAR2(100)
请帮助我做到这一点。提前谢谢。
答案 0 :(得分:0)
您不需要PL/SQL
。使用SQL
和UNION ALL
在SPOOL
中执行此操作,以便从单个文件中的所有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