暂无图片
oracle sql_to_csv 的方式导出到csv,能不能添加where过滤条件?
我来答
分享
暂无图片 匿名用户
oracle sql_to_csv 的方式导出到csv,能不能添加where过滤条件?

oracle sql_to_csv 的方式导出到csv,能不能添加where过滤条件?


比如,我要导出的内容为:

select A,B,C,D FROM TABLE WHERE t.day >='20210813' and t.day <='20211012';


可不可以:

begin
sql_to_csv('select A,B,C,D FROM TABLE WHERE t.day >='20210813' and t.day <='20211012';','CSV_OUT_PATH','test01.csv');
end;
/

我执行报错,感觉是转义有问题,但不知道如何转义,大佬求助下

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
JiekeXu
暂无图片

当然可以转义了,只是你的 where 条件中的时间需要用 to_date 函数转一下

to_date('20210813','yyyymmdd')


WHERE t.day >=to_date('20210813','yyyymmdd') and t.day <=to_date('20211012','yyyymmdd');

暂无图片 评论
暂无图片 有用 1
打赏 1
佳佳
2021-10-15
begin sql_to_csv('select count(*) FROM A t WHERE t.day \>=to_date('20210913','yyyymmdd') and t.day \<=to_date('20211012','yyyymmdd')','CSV_OUT_PATH','test01.csv'); end; / 那就是这样的,还是报错,感觉还是转义有问题
DarkAthena

sql字符串中存在单引号的转义方式常用的有两种,

一种是内部的单引号翻倍,

begin
sql_to_csv('select A,B,C,D FROM TABLE WHERE t.day >=''20210813'' and t.day <=''20211012'';','CSV_OUT_PATH','test01.csv');
end;
/

另一种是使用 q'{}' 的方式把字符串包起来

begin
sql_to_csv(q'{select A,B,C,D FROM TABLE WHERE t.day >='20210813' and t.day <='20211012';}','CSV_OUT_PATH','test01.csv');
end;
/

另外,你这个sql_to_csv非oracle自带,所以我不确定是不是sql里要包含分号,如果上面的方式不行,就把分号去掉

暂无图片 评论
暂无图片 有用 0
打赏 1
佳佳
2021-10-15
感谢,你的第一种方法,是可以的!第二种方法好像不太行。
Uncopyrightable

可以试下sqlplus下的方式,看看差异后调整下sql_to_csv;

set echo off
set feedback off
set linesize 100
set pagesize 0
set sqlprompt ''
set trimspool on
spool data.csv
select A,B,C,D FROM TABLE WHERE t.day >=''20210813'' and t.day <=''20211012'';
spool off
exit

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
10231内部事件不关会怎么样
回答 5
已采纳
10231是oracle在扫描表的时候,跳过坏块,可以让查询或者导出正常执行,一般是在存在坏块且没有备份的情况下,挽救数据的一种方法。如果你设置了还没有关闭,某些情况下的坏块你就发现不了,如果有备份,
Oracle客户端与服务器端字符集不匹配,请问怎么解决?按顺序输入图2代码,其中1、4无响应。
回答 1
确保将客户端的NLSLANG设置为与服务器端字符集相同
vm安装oracle11g rac 在安装grid的时候卡在网络接口使用情况上, 如何处理?
回答 1
发报错看下
Oracle18c alert日志出现tns错误
回答 1
已采纳
如果应用没有报异常,可以忽略。Oracle把连接错误写入alert日志是个不好的设计。容易淹没真正重要的信息。通常网络的抖动,可能就会出现此问题。如果要进一步分析,去看监听日志。
oracle频繁出现ora12547问题
回答 2
提供几个排查思路,一是确保网络可以到达,包括客户端防火墙等,二是查看Navicat的tns配置,三可以查看监听、sqlnet等。
Docker内安装Oracle19c 创建用户带#
回答 2
已采纳
C这种类型么?那是因为你创建的是容器数据库,而你是在CDB中创建用户,在CDB中创建用户必须要加C不想这样操作的话,可以创建个pdb,然后连接pdb,在pdb中创建用户,就类似在11g操作一样也可以重
能否给一份11g配置的参数。作为标准。
回答 3
你在另外帖子提出的问题,和这个文档基本无关,可以不用参考了。
ADRCI SHOW ALERT内容写入日志文件
回答 5
已采纳
./test.sh|grepviadici|grepvCopyright&gt;&gt;1.log还有啥不想要的,多几次|grepvxxx过滤掉
LISTENER.ORA里ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)这句的含义?
回答 3
已采纳
BEQ(BasicEthernetQuickStart)同一台主机进程之间的快速通信协议
oracle memory_target 如何正确关闭?
回答 4
已采纳
您好!您有备份参数文件吗,请按如下方法操作:如果要禁掉ASM实例的AMM,就一定不要同时resetmemorytarget和memorymaxtarget,而是应该将memorytarget设为0,并
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~