如何在整个会话中用另一个字符串替换指定的子字符串

问题描述 投票:0回答:1

我想使用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 

我的数据也可以包含逗号(,)。如果任何列数据包含逗号,我想将其替换为“ \,”。

如何为多个表和多个列替换逗号?我检查了替换功能,但我不想提及列名

oracle
1个回答
0
投票

只要您使用的是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

您无法逃脱,但是如果您将内容括在引号中,那么也许就没关系了。

© www.soinside.com 2019 - 2024. All rights reserved.