如何从文件列表中查询表

时间:2014-09-16 16:41:38

标签: sql oracle

我们有一个100个表的列表,我们需要找到它们的压缩与否,有一种方法我可以在一个文件上输入这100个表名并用sql查询调用它,比如,< / p>

select 
  compression 
from 
  dba_tables 
where 
  table_name ...

然后给出具有此表列表的文件名。

2 个答案:

答案 0 :(得分:0)

您可以将列表加载到表格中(&#34; my_list&#34;)然后加入dba_tables。类似的东西:

with compressed_tables as (
    select owner, table_name, tablespace_name
    from dba_tables
    where compression = 'ENABLED'
)
select c.table_name
from compressed_tables c, my_list l
where c.table_name = l.table_name
order by 1;

<强>更新

如果您想使用表名的复制/粘贴列表,您当然可以在查询中使用它(无需加载到单独的表中)。只需单引号用逗号分隔的表名:

select table_name
from dba_tables
where compression = 'ENABLED'
and table_name IN (
'TABLE_A',
'TABLE_B',
'TABLE_C'
);

答案 1 :(得分:0)

必须提及您的操作系统详细信息。

例如,如果您的操作系统是 * NIX ,则在您的shell脚本中只需要从列表中循环表名并将它们作为参数传递给匿名者阻止,你只需打开一个sqlplus连接。

对于 Windows操作系统,您可以在特定位置拥有一个包含table_names列表的批处理文件,然后它只会调用底层脚本。