我有一个蝙蝠文件,它调用sql developer并把查询假脱机到文本文件,但是结果全都在一行中,看来它不知道如何识别一行。
例如,如果我在sql Developer中手动运行假脱机脚本,则txt文件看起来像这样完美:
“商品”,“数量”,“价格”
“ A11”,“ 4”,“ 0.86”
“ A12”,“ 3”,“ 0.56”
“ A14”,“ 5”,“ 0.3”
但是如果我用bat文件运行它,它就会像这样出现:
“商品”,“数量”,“价格”“ A11”,“ 4”,“ 0.86”“ A12”,“ 3”,“ 0.56”“ A14”,“ 5”,“ 0.3”
没有正确的格式,当我将其导入excel文件时,所有数据都在一个单元格中。
我尝试了各种格式,例如SET PAGESIZE, SET TERMOUT
...但是这些都不起作用。在我的另一台设备中,我运行了完全相同的代码,但是我没有这个问题。
bat文件代码:
@echo off
C:
cd C:\sqldeveloper\sqldeveloper\bin
sdcli migration -actions=mkconn,runsql -connDetails=target_oracle:oracle:XXXXX -conn=target_oracle -sql="C:\Desktop\1.sql"
1.sql:
spool "C:\Desktop\test.txt"
@C:\2.sql as script(F5);
spool off
2.sql:
Select /*csv*/ * From (
select * from item
);
我在这里停留了一段时间,如果您有解决方案,请告诉我,谢谢。
答案 0 :(得分:0)
答案是为作业使用正确的SQL Developer命令行界面。
我们有两个:
SDCLI -这是完整的SQL Developer程序的简写版本-奇特的说法,没有GUI。它可以执行诸如执行数据库导出或调用购物车功能之类的操作。通过“迁移”任务使用它运行SQL语句就像使用火焰喷射器为汽车的挡风玻璃除霜-尽管可能不太有趣。
SQLcl -这是Oracle数据库的命令行交互式界面。它是SQL * Plus的基于Java的版本。在建立连接,运行脚本等方面,它具有与SQL Developer相同的代码-但它只有20MB和200 + MB,并且只需要JRE和JDK。
这两个程序都在sqldeveloper \ bin文件夹-but SQLcl is also a separate, standalone, supported product中。
因此,要执行您想要的操作,您需要更改以下内容:
sdcli migration -actions=mkconn,runsql -connDetails=target_oracle:oracle:XXXXX -conn=target_oracle -sql="C:\Desktop\1.sql"
对此:
sql user / pwd @ server:port / service @c:\ users \ jdsmith \ desktop \ 1.sql
您的1.sql可以是这样:
spool c:\users\jdsmith\desktop\locations-so.csv
Select /*csv*/ * From locations;
spool off
exit
这给了我们
奖金:SQLcl将以更快的速度运行。