我想使用sqlplus命令为多个表创建一个csv文件,如下所示,它将在shell脚本中调用。
sqlplus Username/Password@SSD << EOF
set colsep ,
set pagesize 0
set trimspool on
set linesize 32768
set echo off
spool $TABLE.csv;
SELECT * FROM $TABLE;
spool off;
EXIT;
EOF
我的数据也可以包含逗号(,)。如果任何列数据包含逗号,我想将其替换为“ \,”。
如何为多个表和多个列替换逗号?我检查了替换功能,但我不想提及列名
只要您使用的是SQL Plus 12.2或更高版本,就可以使用SET MARKUP满足您的需求
SQL> create table t ( x varchar2(10), y varchar2(10));
Table created.
SQL> insert into t values ('Hello','There');
1 row created.
SQL> insert into t values ('He,llo','The,re');
1 row created.
SQL> set markup csv on
SQL> select * from t;
"X","Y"
"Hello","There"
"He,llo","The,re"
SQL> set markup csv on quote off
SQL> select * from t;
X,Y
Hello,There
He,llo,The,re
您无法逃脱,但是如果您将内容括在引号中,那么也许就没关系了。