【发布时间】:2013-10-09 12:35:20
【问题描述】:
我不仅尝试查询数据库中的不同表并将它们导出为 CSV,还尝试从多个表中导出数据并将它们作为列连接到此 CSV。
我的前提是能够将表格的内容转存为 CSV 文件:
set colsep ','
set echo off
set feedback off
set linesize 1000
set sqlprompt ''
set headsep off
spool file.csv
select * from messages;
现在我想抓取多个表的某些组件但无济于事(使用联合和减号):
select col1, col2, col3 from messages
union
select col1, col2 from messagedata
union
select col1 from extradata;
在尝试上述方法时,我会得到ORA -1789 query block has incorrect number of result columns,这意味着我正在尝试匹配错误的列数(我试图通过在输出中附加列来避免这种情况)。
如果给定 union 或 minus,它会在错误的数据类型上出错,但那是因为它只是试图将它附加到我的第一个查询的列中。
我的目标是创建一个产生类似输出的查询:
| col1(messages) | ... | col2(messagedata) | ... | col3(extradata) |
-----------------------------------------------------------------------
message ,... ,messagedata ,... ,extradata
message ,... ,messagedata ,... ,extradata
message ,... ,messagedata ,... ,extradata
那么两个问题:
我是否可以像上面那样将多个表中的数据连接到列输出中?就像创建 new 列来输出而不是附加到现有列?
如何为我的数据提供标题(自定义或已由 表中的标识符)在列的顶部?
【问题讨论】:
-
你想
JOIN这些表而不是UNION。现在这些表是如何相互关联的? -
您不能单独输出到列中。列是行的一部分。即使您在表之间没有任何关系,您也需要使用例如行号来
JOIN它们。