使用假脱机 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 包来创建这样的文件。
我正在尝试将多个 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 包来创建这样的文件。