首页 > 解决方案 > 如何在导出 csv 文件中使用“NULL”而不是“”

问题描述

我想"NULL"使用 sql developer 导出 csv 文件。

所以现在我可以这样做:

在此处输入图像描述

但想要这样:

在此处输入图像描述

我怎样才能做到这一点?

编辑:我正在使用的表和我正在谈论的一个查询(更改了一些数据):

CREATE EXAMPLE_TABLE
   (    "ID" NUMBER(15,0), 
    "NAME" VARCHAR2(200 BYTE), 
    "DESCRIPTION" VARCHAR2(500 BYTE), 
    "CATEGORY" VARCHAR2(200 BYTE), 
    "CLASS_NAME" VARCHAR2(200 BYTE), 
    "ATA_CHAPTER" VARCHAR2(200 BYTE), 
    "MEL_NUMBER" NUMBER(15,0), 
    "MEL_CODE" VARCHAR2(50 BYTE), 
    "MEL_TEXT" VARCHAR2(200 BYTE), 
    "MODIFIED_TIME" TIMESTAMP (6), 
    "MODIFIED_BY" VARCHAR2(40 BYTE) DEFAULT '$SYSTEM', 
    "AIRCRAFT_GROUP_ID" NUMBER(15,0), 
    "ORDERING" NUMBER(15,0), 
    "EDITABLE" NUMBER(1,0) DEFAULT 1, 
    "OPT_SCOPE" VARCHAR2(5 BYTE), 
    "REMOVABLE" NUMBER(1,0) DEFAULT 1, 
    "MEL_PENALTY" VARCHAR2(50 BYTE)
   )

Insert into EXAMPLE_TABLE(ID,NAME,DESCRIPTION,CATEGORY,CLASS_NAME,ATA_CHAPTER,MEL_NUMBER,MEL_CODE,MEL_TEXT,MODIFIED_TIME,MODIFIED_BY,AIRCRAFT_GROUP_ID,ORDERING,EDITABLE,OPT_SCOPE,REMOVABLE,MEL_PENALTY) values ('1712','TORA','SAD','RUNWAY','SAD',null,null,null,null,null,'$SYSTEM$','521','28','0','SAD','0',null);

Littlefoot 选择后

在此处输入图像描述

标签: csvoracle-sqldeveloper

解决方案


看起来NVL可能会有所帮助,例如

SQL> select ename, nvl(to_char(comm), 'NULL') comm
  2  from emp
  3  where rownum <= 2;

ENAME      COMM
---------- ----------------------------------------
SMITH      NULL
ALLEN      300

SQL>

我也使用to_char过(因为comm列的数据类型是number)。如果你没有这种情况,那就更好了。


如果要将所有值括在双引号中,则将它们连接到列值,例如

SQL> set heading off
SQL> set linesize 200
SQL> set colsep ','
SQL>
SQL> select
  2  '"' || name        || '"',
  3  '"' || description || '"',
  4  '"' || mel_number  || '"',
  5  '"' || aircraft_group_id || '"'
  6  from example_table;

"TORA"      ,"SAD"       ,""                                        ,"521"

SQL>

如果您使用 Oracle 12.2,您可以set markup csv on查看它是否对您有任何好处。


推荐阅读