用于生成制表符分隔数据文件的 SQLPlus 设置
任何人都有一套好的 sqlplus 配置指令来帮助将给定的 sql 查询转换为很好的制表符分隔的输出,以便拉入电子表格或进一步处理?
Anyone have a good set of sqlplus configuration directives to help transform a given sql query into nicely tab separated output for pulling into a spreadsheet or further processing?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
正如 Justin 在他的链接中指出的那样,使用 set colsep 函数 SQLPlus 命令可以节省为每列键入分隔符的时间。
但对于制表符分隔,
set colsep Chr(9)
不起作用。对于 UNIX 或 LINUX,请使用
set colsep ' '
,单引号之间的空格为键入的制表符。对于 Windows,请使用以下设置:
As Justin pointed out in his link, using the
set colsep
function SQLPlus command saves typing a separator for each column.But for tab-delimited,
set colsep Chr(9)
won't work.For UNIX or LINUX, use
set colsep ' '
with the space between the single-quotes being a typed tab.For Windows, use these settings:
我多次窃取的一个特定脚本来自 将数据提取到平面文件。 如果我需要 SQL*Plus 中的快速且脏的平面文件。 不过,对于任何正在进行的过程,我倾向于更喜欢 Tom 之前在该线程上发布的 DUMP_CSV 函数。
One particular script that I have stolen on more than one occasion comes from an AskTom thread on extracting data to a flat file. If I needed a quick and dirty flat file out of SQL*Plus. I would tend to prefer the DUMP_CSV function Tom posted earlier on that thread for any sort of ongoing process, though.
我得到了一个愚蠢的解决方案。 效果非常好。
背后的解决
原理
其实,这只是一个字符串连接。
CHR(9) -> '\t'
列 1 || CHR(9) || 列 2 -> concat(列 1, '\t', 列 2)
I got a stupid solution. It worked very well.
Solution
principle behind
Actually, it's just a string concatenation.
CHR(9) -> '\t'
column1 || CHR(9) || column2 -> concat(column1, '\t', column2)
制表符是不可见的,但是,如果您键入以下内容:-
set colsep Z
但不是按 Z,而是按键盘上的 TAB 键,然后按 Enter,它就会起作用。 SQLPlus 认为空格(不可见的制表符)之后的下一个字符是 colsep。
我已将所有设置放入名为 /cli.sql 的文件中,因此我只需执行以下操作:-
@/cli.sql
即可加载所有设置。
(注意 - 行尾的不可见空格后面有一个不可见的选项卡:)
享受吧!
Tab characters are invisible, but, if you type the following:-
set colsep Z
but instead of the Z, press the TAB key one your keyboard, followed by enter, it works. SQLPlus understands that the next character after the space (the invisible tab) is the colsep.
I've placed all my settings into a file named /cli.sql so I just do this:-
@/cli.sql
to load them all.
(BEWARE - there is an invisible tab after an invisible space on the end of the line:)
Enjoy!
查看 Oracle 文档:
您可以使用制表符的 ASCII 值 9 和 chr 函数在 Oracle 中生成制表符:
Check out the Oracle documentation:
You can generate a tab in Oracle by using the tab's ASCII value 9 and the chr function: