Board logo

标题: 100元求批处理通过指定的SQl语句,连接远程Oracle导出excel [打印本页]

作者: kevinheun    时间: 2018-7-5 00:21     标题: 100元求批处理通过指定的SQl语句,连接远程Oracle导出excel

本地安装了 oracle client,在netmanager里也配好了服务名。

类似于 select * from AAA where col1 between to_date('&xxxxxxxx','yyyymmdd') and to_date('&xxxxxxxx','yyyymmdd')

执行前提示用户输入开始时间和结束时间,然后导出
作者: kevinheun    时间: 2018-7-5 00:22

第一次发帖,怎么联系?有没有群?
作者: Batcher    时间: 2018-7-5 09:20

  1. @echo off
  2. set OraUser=USERNAME
  3. set OraPass=PASSWORD
  4. set OraIP=192.168.0.123
  5. set OraPort=1521
  6. set OraService=BatHome
  7. set OraSql=test.sql
  8. set /p StartDate=输入开始日期(例如20180701):
  9. set /p EndDate=输入结束日期(例如20180705):
  10. > "%OraSql%" echo spool test.csv
  11. >>"%OraSql%" echo select * from AAA where col1 between to_date('%StartDate%','yyyymmdd') and to_date('%EndDate%','yyyymmdd')
  12. >>"%OraSql%" echo spool off
  13. start sqlplus %OraUser%/%OraPass%@%OraIP%:%OraPort%/%OraService% @%OraSql%
复制代码

作者: kevinheun    时间: 2018-7-5 11:09

回复 3# Batcher


    你好,代码已看到,我抽时间试一下,决不食言
作者: Batcher    时间: 2018-7-5 11:33

回复 2# kevinheun


可以加论坛的微信群或者QQ群
http://bbs.bathome.net/thread-3473-1-1.html
作者: kevinheun    时间: 2018-7-6 23:23

回复 5# Batcher

请问哪里还需要改啊

    @echo off
set OraUser=sh
set OraPass=xxx
set OraIP=127.0.0.1
set OraPort=1521
set OraService=H
set OraSql=test.sql

set /p StartDate=输入开始日期(例如20180701):
set /p EndDate=输入结束日期(例如20180705):
> "%OraSql%" echo spool test.csv
>>"%OraSql%" echo select * from AAA where col1 between to_date('%StartDate%','yyyymmdd') and to_date('%EndDate%','yyyymmdd')
>>"%OraSql%" echo spool off
start sqlplus %OraUser%/%OraPass%@%OraIP%:%OraPort%/%OraService% @%OraSql%

---------------

select * from profits


1        3        987        13        999        1998/1/10        783.03        1232.16        1232.16        1.00        783.03
2        3        1660        13        999        1998/1/10        783.03        1232.16        1232.16        1.00        783.03
3        3        1762        13        999        1998/1/10        783.03        1232.16        1232.16        1.00        783.03
4        3        1843        13        999        1998/1/10        783.03        1232.16        1232.16        1.00        783.03
5        3        1948        13        999        1998/1/10        783.03        1232.16        1232.16        1.00        783.03
6        3        2273        13        999        1998/1/10        783.03        1232.16        1232.16        1.00        783.03
7        3        2380        13        999        1998/1/10        783.03        1232.16        1232.16        1.00        783.03
作者: Batcher    时间: 2018-7-6 23:52

回复 6# kevinheun


有什么报错信息吗?
把代码生成的 test.sql 和 test.csv 传上来我看一下
作者: kevinheun    时间: 2018-7-10 11:23

回复 7# Batcher


    你好,
bat执行后 就一直保持在这个界面:

SQL*Plus: Release 11.2.0.1.0 Production on 星期二 7月 10 11:20:03 2018

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

  3
--------------------------

生成的CSV是空的


-------------------------

生成的test.sql内容如下:
spool test.csv
select * from sales where time_id between to_date('19980110','yyyymmdd') and to_date('19980120','yyyymmdd')
spool off

---------------
bat内容如下:
@echo off
set OraUser=sh
set OraPass=owenowen
set OraIP=127.0.0.1
set OraPort=1521
set OraService=H
set OraSql=test.sql

set /p StartDate=输入开始日期(例如20180701):
set /p EndDate=输入结束日期(例如20180705):
> "%OraSql%" echo spool test.csv
>>"%OraSql%" echo select * from sales where time_id between to_date('%StartDate%','yyyymmdd') and to_date('%EndDate%','yyyymmdd')
>>"%OraSql%" echo spool off
start sqlplus %OraUser%/%OraPass%@%OraIP%:%OraPort%/%OraService% @%OraSql%
作者: Batcher    时间: 2018-7-19 20:21

回复 8# kevinheun


    打开一个CMD窗口,手工执行sqlplus连接数据库能成功吗?连接数据库成功之后,手工执行 test.sql 里面的命令能正常生产csv文件吗?




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2