2008-09-19 100 views

回答

3

我有一个特定的脚本tolen不止一次来自extracting data to a flat file上的AskTom线程。如果我需要SQL * Plus以外的快速和肮脏的平面文件。尽管如此,我倾向于选择Tom在该线程上发布的DUMP_CSV函数来处理任何类型的进程。

8

正如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

我得到了一个愚蠢的方案。它工作得很好。

解决方案

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

原则背后

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

CHR(9)- > '\ T'

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

+0

警告:一旦在其中一个值中遇到换行符,执行此操作将截断行的输出。 – nodmonkey 2016-09-27 07:08:12

相关问题