微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用 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

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

谢谢

解决方法

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

“简单”的解决方案是使用 3 个带有 SELECTUNION 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 包来创建这样的文件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。