oracle 如何通过命令行导出SQL脚本的结果?

wbrvyc0a  于 2022-11-22  发布在  Oracle
关注(0)|答案(1)|浏览(316)

这是我在StackOverflow上的第一个问题(但不是我在Oracle SQL Developer上问自己的第一个问题:p)
我的需求:
我第一次尝试只在Oracle SQL Dev上完成我所有的工作,但它需要很多资源来完成。
结果,我决定只导出我需要的所有数据,然后将所有数据导入到R中并在其上进行我的工作。
我的问题是:我运行了大约10个不同的SQL脚本,它们非常简单。请在下面找到其中的两个:
第一个
然后,我必须为每个结果启动Export功能,更改要传递到.dsv的文件的格式和类型(只是要有正确的逗号:D),还必须更改文件夹目录和名称。
重复性太强,可能会产生一些错误。
这就是为什么我想添加一个命令行,我会指定文件夹目录,名称,格式和什么。
你有什么消息吗?
非常感谢您的光临。
我没有尝试任何东西,因为我没有任何想法去尝试。
我试图将R连接到Oracle,但我想我必须为此付费(而公司不想:D)。

uinbv5nw

uinbv5nw1#

使用SQLcl绝对是正确的方法。建立一个脚本(或一组脚本),运行所有您希望将数据导出到CSV文件的查询。下面是一个示例脚本,它将连接到数据库,设置格式,生成文件,然后断开连接。
该脚本将使用如下命令启动:

sql /nolog @start_export.sql

start_export.sql示例内容:

--Connect to the database
connect <username>/<password>@<TNSalias>

--Set format to CSV for results from SELECT statements
set sqlformat csv;
--Turn off the number of rows that get returned by the select
set feedback off;

--Create 1st report
spool report1.csv

select japolip_wnupo wnupo,japolip_socpo socpo,japolip_jasccdp_winag winag,japolip_wnpro wnpro,jaagenp_ainag,jaagenp_nomag
from sunapicf.japolip japolip
left join sunapicf.jaagenp jaagenp on jaagenp_winag = japolip_jasccdp_winag;

--Create 2nd report
spool report2.csv

select distinct socpr socpo,jaagenp.jaagenp_winag winag,JACRCFP.JACRCFP_wnpro wnpro,jaagenp_ainag,jaagenp_nomag
from sunapicp.JACRCFP JACRCFP
left join 
(
select japrodp_wnpro,socpr
from sunapicp.japrodp japrodp
cross join xmltable('//JAPRODP' passing xmltype(japrodp.ficxml) columns SOCPR)
) japrodp on japrodp.japrodp_wnpro = JACRCFP.JACRCFP_wnpro
left join sunapicf.jaagenp jaagenp on jaagenp.jaagenp_winag = jacrcfp.jacrcfp_winit;

--Disconnect
exit

相关问题