我有一個通過命令行將數據(包括CLOB)從Oracle SQL導出爲CSV的腳本。當我執行腳本,然後通過Python查看數據時,我會得到每行正確的列數以及正確的數據。但是,每個單元格都有額外的空間。我的方法:從Oracle SQL從命令導出爲CSV
file.sql:
spool "/home/username/file.csv";
SELECT /*csv*/ '"'||COLUMN_1||'"',
'"'||COLUMN_2||'"',
'"'||DBMS_LOB.substr(COLUMN_3,3000)||'"',
...
'"'||COLUMN_N||'"'
FROM TABLE;
spool off;
file.sh:
export ORACLE_SID=MYSID
sqlplus/as sysdba <<EOF
conn myUser/myPass
set heading off
set termout off
set trimout off
set newpage none
set pages 0
set feedback off
set echo off
set verify off
set trimspool on
set sqlprompt ""
set colsep ","
set linesize 32767
@/home/username/file.sql
exit
EOF
當我試圖通過修剪串聯空間,整個事情分崩離析(不平等列長度,中斷應該沒有,等等):
修改file.sql:
spool "/home/username/file.csv";
SELECT /*csv*/ '"'||COLUMN_1||'"'||','
'"'||COLUMN_2||'"'||','
'"'||DBMS_LOB.substr(COLUMN_3,3000)||'"'||','
...
'"'||COLUMN_N||'"'
FROM TABLE;
spool off;
我在做什麼錯在這裏?我也嘗試了一些其他的連接方法,比如使用||'","'||
來代替,但這似乎也不起作用。
您是否檢查過數據中的空格?嘗試在列的周圍添加TRIM()。 –
數據中沒有空格,而TRIM()似乎不起作用。要清楚,我的輸出如下所示:「VALUE」/ s/s/s/s/s/s/s/s/s/s,「VALUE2」/ s/s/s/s/s/s/s/s/s/s/s,/ s/s/s/s/s/s/s「VALUE3」/ s/s/s/s/s/s/s/「」內的輸出很好。 – datasci
無視我上面的評論,並看到我發佈的答案。 –