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

Lc0*_*0rE 3 sql csv oracle

我需要做一个批处理,每天导出一个DB在"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
Run Code Online (Sandbox Code Playgroud)

并且我的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                  |
+---------+---------+---------------------------+---------+
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我在字段"COLUMN3"上有许多新行字符,所以我想如果有一些有用的命令如SET SOMETHING来帮助我解决这种情况.

感谢大家的支持.

卢卡

Mah*_*kar 8

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

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