使用假脱机 SQLPLUS 的自定义文件格式

Custom File format using Spool SQLPLUS

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

格式如下:

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 来自单独的 table,最后一个是硬编码的,中间行中的数据来自主 table。我如何使用 SPOOL SQL*PLUS 或任何其他更适合 table 场景的实用程序生成此格式的 .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 包来创建这样的文件。