使用Spool SQLPLUS的自定义文件格式



我正在尝试将多个表中的数据导出为自定义管道分隔的文件格式。我能够从单个表生成管道分隔的文件,但无法实现所需的自定义格式。

以下是格式:

HD|034567|24052021092630|1.0
3|||||0|0|12345678909|2|SDATA|DNAME||||TBD|||M|||||||||||||||||
3|||||0|0|12345678910|1|SDATA|DNAME||||TBD|||F|||||||||||||||||
3|||||0|0|12345678911|5|SDATA|DNAME||||TBD|||M|||||||||||||||||
FT|000000003

其中以HD开头的first row来自单独的表,最后一个来自硬编码,中间行中的数据来自主表。如何使用SPOOLSQL*PLUS或任何其他更适合场景的实用程序生成这种格式的.dat文件。

谢谢

您发布问题已经5个小时了,还没有回复也许这意味着你不能按照计划的方式去做。

"琐碎的";解决方案是使用3个SELECT语句和一个UNION ALL,例如

select 'HD', col1, col2, col3 from table_1
UNION ALL
select number of columns from table_2
UNION ALL
select 'FT', 000000003 from dual

但它不会工作,因为

  • 列数不匹配
  • 数据类型可能也不匹配

您可以运行3个单独的select语句,但其间会有空行。

因此,考虑切换到PL/SQL和UTL_FILE包来创建这样的文件。

最新更新