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