如何在导出 csv 文件中使用 "NULL" 而不是 ""
How to have "NULL" instead of "" in export csv file
我想 "NULL"
使用 sql 开发人员导出 csv 文件。
所以现在我可以这样做了:
但想要这样:
我怎样才能做到这一点?
编辑:
Table 我正在使用和正在谈论的一个查询(更改了一些数据):
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);
在小脚丫之后 select
- 第一列缺少“”
看起来 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
看看它对您的情况是否有用。
我想 "NULL"
使用 sql 开发人员导出 csv 文件。
所以现在我可以这样做了:
但想要这样:
我怎样才能做到这一点?
编辑: Table 我正在使用和正在谈论的一个查询(更改了一些数据):
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);
在小脚丫之后 select
- 第一列缺少“”
看起来 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
看看它对您的情况是否有用。