我已经编写了sql以生成CSV格式的输出数据。我已经使用了后台打印来以CSV格式生成。
SET LINESIZE 1000 TRIMSPOOL ON FEEDBACK OFF
SPOOL E:\oracle\extract\emp2.csv
SELECT emp_id,
emp_name
FROM offc.employee
ORDER BY emp_id;
SPOOL OFF
SET PAGESIZE 14
输出到位。输出正确生成,但是当我看到CSV文件时,所有数据都进入CSV的same column A
。
我想要emp_id in column A
和emp_name in columnB
。为什么它们要进入同一列?这是什么问题?
谈论我自己的经验:尽管Excel 知道如何打开CSV
文件,但是它有点愚蠢,并且仍然将所有内容都放在第一列中。因此,我更喜欢使用列分隔符来创建TXT
文件(所以-是的,它基本上is是逗号分隔的文件(或您选择的任何分隔符))。
例如:
SQL> set pagesize 100
SQL> set linesize 100
SQL> set colsep ";"
SQL>
SQL> spool emp.txt
SQL>
SQL> select * from emp;
EMPNO;ENAME ;JOB ; MGR;HIREDATE; SAL; COMM; DEPTNO
----------;----------;---------;----------;--------;----------;----------;----------
7369;SMITH ;CLERK ; 7902;17.12.80; 800; ; 20
7499;ALLEN ;SALESMAN ; 7698;20.02.81; 1600; 300; 30
7521;WARD ;SALESMAN ; 7698;22.02.81; 1250; 500; 30
7566;JONES ;MANAGER ; 7839;02.04.81; 2975; ; 20
7654;MARTIN ;SALESMAN ; 7698;28.09.81; 1250; 1400; 30
7698;BLAKE ;MANAGER ; 7839;01.05.81; 2850; ; 30
7782;CLARK ;MANAGER ; 7839;09.06.81; 2450; ; 10
7788;SCOTT ;ANALYST ; 7566;09.12.82; 3000; ; 20
7839;KING ;PRESIDENT; ;17.11.81; 5000; ; 10
7844;TURNER ;SALESMAN ; 7698;08.09.81; 1500; 0; 30
7876;ADAMS ;CLERK ; 7788;12.01.83; 1100; ; 20
7900;JAMES ;CLERK ; 7698;03.12.81; 950; ; 30
7902;FORD ;ANALYST ; 7566;03.12.81; 3000; ; 20
7934;MILLER ;CLERK ; 7782;23.01.82; 1300; ; 10
14 rows selected.
SQL> spool off;
现在,启动Excel并转到打开;选择“所有文件”(即不仅是Excel类型的文件),这样您会看到列出的emp.txt
。 Excel然后-在其“文本导入向导”中-询问您文件的类型(选择定界:
设置分隔符(在我们的示例中为分号)
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLmltZ3VyLmNvbS9jSVgxMzVBLnBuZyJ9”>
并-打开文件:
现在所有内容都在其自己的列中。
[这里,问题是空格被认为是您的列数据的separator
,而excel无法分隔space separated
的列值。
您可以将colsep
属性与其他属性一起使用,如下所示:
set colsep , -- defines column data separator
set pagesize 14 -- defines size of the page. Keep it large so that header is not repeated
set trimspool on -- remove trailing blanks
set lines 1000 -- linesize should be more than sum of width of the all columns
set FEEDBACK OFF -- removes the comment at the end of the data
SPOOL E:\oracle\extract\emp2.csv
SELECT emp_id,
emp_name
FROM offc.employee
ORDER BY emp_id;
SPOOL OFF
干杯!