Oracle SQL:导出到CSV以避免换行

时间:2014-07-14 15:19:08

标签: sql oracle csv

我需要做一个批处理,每天导出一些数据库中的数据库。文件。 我正在使用SET COLSEP命令,但我有一些问题要导出一个大小为4000的大型化合物(VARCHAR2:4000):它会在输出文件中给我回复许多空行和换行符。

我试着用一个例子来解释一下:

QUERY
-----

SET NEWPAGE 0
SET SPACE 0
SET ECHO OFF
SET FEEDBACK OFF
SET HEADING OFF
SET PAGESIZE 0
SET LINESIZE 2000
SET COLSEP ";"

SPOOL test.csv


SELECT 
  C.COLUMN1,
  C.COLUMN2,
  C.COLUMN3, -- column with issue
  C.COLUMN4,
FROM TABLE1 
WHERE CONDITION1 = TRUE;

SPOOL OFF

exit

我的csv文件中有输出:

OUTPUT
------

+---------+---------+---------------------------+---------+
| COLUMN1 ; COLUMN2 ;          COLUMN3          ; COLUMN4 |
+---------+---------+---------------------------+---------+
| VALUE1_1;VALUE1_2 ;Lorem ipsum dolor sit amet ;VALUE1_4 |
+---------+---------+---------------------------+---------+
|                    consectetur adipiscing elit          |
+---------+---------+---------------------------+---------+
|                    Donec a diam lectus                  |
+---------+---------+---------------------------+---------+
| VALUE2_1;VALUE2_2 ;Sed sit amet ipsum mauris  ;VALUE2_4 |
+---------+---------+---------------------------+---------+
|                                                         |
+---------+---------+---------------------------+---------+
|                    Donec a diam lectus                  |
+---------+---------+---------------------------+---------+
| VALUE3_1;VALUE3_2 ;                           ;VALUE2_4 |
+---------+---------+---------------------------+---------+
|                    Pellentesque auctor nisi             |
+---------+---------+---------------------------+---------+
|                    Donec a diam lectus                  |
+---------+---------+---------------------------+---------+

正如你所看到的,我在这个领域有很多新的角色" COLUMN3"所以我想如果有一些像SET SOMETHING这样有用的命令来帮助我解决这种情况。

感谢大家的支持。

卢卡

1 个答案:

答案 0 :(得分:8)

SELECT 
  C.COLUMN1,
  C.COLUMN2,
  replace(C.COLUMN3,CHR(10),null) AS COLUMN3, 
  C.COLUMN4,
FROM TABLE1 C
WHERE CONDITION1 = TRUE;

由于此处的新行是因为数据,您必须在选择查询中删除它们!