用于生成制表符分隔数据文件的 SQLPlus 设置

发布于 2024-07-06 19:31:30 字数 73 浏览 6 评论 0原文

任何人都有一套好的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

短叹 2024-07-13 19:31:30

正如 Justin 在他的链接中指出的那样,使用 set colsep 函数 SQLPlus 命令可以节省为每列键入分隔符的时间。

但对于制表符分隔,set colsep Chr(9) 不起作用。

对于 UNIX 或 LINUX,请使用 set colsep ' ',单引号之间的空格为键入的制表符。

对于 Windows,请使用以下设置:

col TAB# new_value TAB NOPRINT
select chr(9) TAB# from dual;
set colsep "&TAB"

select * from table;

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:

col TAB# new_value TAB NOPRINT
select chr(9) TAB# from dual;
set colsep "&TAB"

select * from table;
情域 2024-07-13 19:31:30

我多次窃取的一个特定脚本来自 将数据提取到平面文件。 如果我需要 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.

路弥 2024-07-13 19:31:30

我得到了一个愚蠢的解决方案。 效果非常好。

背后的解决

SELECT column1 || CHR(9) || column2 || CHR(9) || column3 ... ...
FROM table

原理

其实,这只是一个字符串连接

CHR(9) -> '\t'

列 1 || CHR(9) || 列 2 -> concat(列 1, '\t', 列 2)

I got a stupid solution. It worked very well.

Solution

SELECT column1 || CHR(9) || column2 || CHR(9) || column3 ... ...
FROM table

principle behind

Actually, it's just a string concatenation.

CHR(9) -> '\t'

column1 || CHR(9) || column2 -> concat(column1, '\t', column2)

弱骨蛰伏 2024-07-13 19:31:30

制表符是不可见的,但是,如果您键入以下内容:-

set colsep Z

但不是按 Z,而是按键盘上的 TAB 键,然后按 Enter,它就会起作用。 SQLPlus 认为空格(不可见的制表符)之后的下一个字符是 colsep。

我已将所有设置放入名为 /cli.sql 的文件中,因此我只需执行以下操作:-

@/cli.sql

即可加载所有设置。

set serveroutput on
SET NEWPAGE NONE
set feedback off
set echo off
set feedback off
set heading off
set colsep  
set pagesize 0 
SET UNDERLINE OFF
set pagesize 50000
set linesize 32767
connect use/password

(注意 - 行尾的不可见空格后面有一个不可见的选项卡:)

set colsep  

享受吧!

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.

set serveroutput on
SET NEWPAGE NONE
set feedback off
set echo off
set feedback off
set heading off
set colsep  
set pagesize 0 
SET UNDERLINE OFF
set pagesize 50000
set linesize 32767
connect use/password

(BEWARE - there is an invisible tab after an invisible space on the end of the line:)

set colsep  

Enjoy!

情深缘浅 2024-07-13 19:31:30

查看 Oracle 文档:

您可以使用制表符的 ASCII 值 9 和 chr 函数在 Oracle 中生成制表符:

select chr(9) from dual;

Check out the Oracle documentation:

You can generate a tab in Oracle by using the tab's ASCII value 9 and the chr function:

select chr(9) from dual;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文