【发布时间】:2021-10-11 15:46:35
【问题描述】:
我从 spooled sql 命令中输入了 4GB 的数据,如下所示:
头
SQL> select * from hist_tran_monthly;
250, 10, 0,R, 199801, 4155, 199801
2222,31-JAN-98
250, 10, 0,R, 199802, 4155, 199802
11111,28-FEB-98
250, 10, 0,C, 199803, 4155, 199803
11111,31-MAR-98
250, 10, 0,R, 199807, 4155, 199807
28934,29-JUN-98
250, 10, 0,R, 199808, 4155, 199808
尾巴
701679, 485, 1,C, 201001, 222.76, 201311
14112013,14-NOV-13
701679, 485, 1,C, 201002, 222.76, 201311
14112013,14-NOV-13
701679, 485, 1,C, 201003, 222.76, 201311
14112013,14-NOV-13
701679, 485, 1,C, 201004, 229.69, 201311
14112013,14-NOV-13
42912030 rows selected.
SQL> spool off
我需要得到这样的 output.csv
输出
250, 10, 0,R, 199801, 4155, 199801, 2222,31-JAN-98
250, 10, 0,R, 199802, 4155, 199802, 11111,28-FEB-98
250, 10, 0,C, 199803, 4155, 199803, 11111,31-MAR-98
250, 10, 0,R, 199807, 4155, 199807, 28934,29-JUN-98
...
701679, 485, 1,C, 201001, 222.76, 201311, 14112013,14-NOV-13
701679, 485, 1,C, 201002, 222.76, 201311, 14112013,14-NOV-13
701679, 485, 1,C, 201003, 222.76, 201311, 14112013,14-NOV-13
701679, 485, 1,C, 201004, 229.69, 201311, 14112013,14-NOV-13
如何删除第一行和最后两行并删除备用换行符并插入逗号以使其成为csv 文件。
【问题讨论】:
-
您的示例输入的最长行至少有 73 个可见字符;由此我将假设您的 SQL 客户端将 SQL 结果包装在大约 80 个字符处;在编写脚本以消除过早的换行之前,您可能想查看您的 SQL 客户端是否具有(命令行)选项来扩展输出的宽度(例如,
isql具有允许“宽”的-w <number_of_columns>输出(例如,-w 1000) -
输出来自Oracle 8i DB,我不认为
isql命令可以和它一起使用 -
我不是说要使用
isql,我是说无论您使用什么工具(sqlplus?sqldeveloper?)都可能有类似于isql'的选项s-w选项;对于 Oracle,set line是否可以增加宽度? -
是的,这有帮助!
标签: bash oracle shell csv command-line