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

时间:2008-09-19 23:14:24

标签: oracle tabs sqlplus

任何人都有一套很好的sqlplus配置指令来帮助将给定的sql查询转换为精确的制表符分隔输出,以便进入电子表格或进一步处理?

5 个答案:

答案 0 :(得分:9)

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;

答案 1 :(得分:3)

我不止一次盗取的一个特定脚本来自extracting data to a flat file上的AskTom线程。如果我需要SQL * Plus中的快速和脏的平面文件。我倾向于更喜欢Tom先前在该线程上发布的DUMP_CSV函数,用于任何正在进行的过程。

答案 2 :(得分:1)

我得到了一个愚蠢的解决方案。它工作得非常好。

解决方案

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

背后的原则

实际上,它只是一个字符串连接

CHR(9) - > '\ t'

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

答案 3 :(得分:0)

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

设置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  

享受!

答案 4 :(得分:-4)

查看Oracle文档:

您可以使用选项卡的ASCII值9和chr函数在Oracle中生成选项卡:

select chr(9) from dual;