开发语言: C#
数据库采用Oracle9i
每当到月底的时候下面的单位需将大量业务数据上报到总公司。
解决办法:利用ado.net收集数据放到dataset中通过WebService传送到总公司,然后解释成CTL控制程序,使用SQLLDR user/pwd@DataSvice control=XXXXX.ctl方式导入到总公司Oracle数据库中。在调试过程中发现一个奇怪的问题:
Sqlldr 无法通过程序进行导入。(语法都没有问题)
但是直接生成一个批处理文件,手工点击运行又都可以导入。不知什么原因。刚开始以为是SQLLDR.exe的路径有问题。结果我把绝对路径输入(c:\oracle90\bin\SQLLDR user/pwd@DataSvice control=XXXXX.ctl)也还是出现上面的这个问题。有这个经验的兄弟姐妹们!帮帮我吧。
数据库采用Oracle9i
每当到月底的时候下面的单位需将大量业务数据上报到总公司。
解决办法:利用ado.net收集数据放到dataset中通过WebService传送到总公司,然后解释成CTL控制程序,使用SQLLDR user/pwd@DataSvice control=XXXXX.ctl方式导入到总公司Oracle数据库中。在调试过程中发现一个奇怪的问题:
Sqlldr 无法通过程序进行导入。(语法都没有问题)
但是直接生成一个批处理文件,手工点击运行又都可以导入。不知什么原因。刚开始以为是SQLLDR.exe的路径有问题。结果我把绝对路径输入(c:\oracle90\bin\SQLLDR user/pwd@DataSvice control=XXXXX.ctl)也还是出现上面的这个问题。有这个经验的兄弟姐妹们!帮帮我吧。
解决方案 »
- oracle shutdowm immediate 关闭数据库为什么是无效命令?
- 今天颇有收获,初步看懂了logmnr分析的在线日志
- oracle多用户登录
- ORACLE 全文索引问题
- 求您转化条SQL(SQLSERVER->ORACLE)
- ORA-01461: can bind a LONG value only for insert into a LONG column
- 又高分求助一个Send mail问题
- oracle 函数 加密编译后怎么查看参数
- oracle数据库里如何关闭ResultSet 、preparedStatement、Statement
- 我现在条件恶劣 买ORACLE的基础书都没有 希望哪位能给我介绍在网上的电子书籍或者好的网站
- 为什么找不到Oracle.DataAccesss.dll呢?
- Oracle字符转义
先调出cmd.exe
然后填写命令
路径使用绝对路径 如:@"c:\oracle\bin\sqlldr.exe ..."
先调出cmd.exe
然后填写命令
路径使用绝对路径 如:@"c:\oracle\bin\sqlldr.exe ..."我现在就是用这个做的.结果这个进程根本不执行,
但我手工cmd窗口中执行就是没问题.
我在用Oralce服务器的机子执行通过了!
但在只有Oracle客户端的机子上执行时还老样子!
为什么啊?
可能对解决问题会有帮助.但我始终找不到原因!!!!
@echo off
echo %TIME% START>TEST.LOG
c:\oracle90\bin\SQLLDR user/pwd@DataSvice control=XXXXX.ctl >>TEST.LOG
echo %TIME% END>>TEST.LOG
然后在C#中执行这个BAT,看看TEST.LOG内容
<<<写个BAT,如
@echo off
echo %TIME% START>TEST.LOG
c:\oracle90\bin\SQLLDR user/pwd@DataSvice control=XXXXX.ctl >>TEST.LOG
echo %TIME% END>>TEST.LOG
然后在C#中执行这个BAT,看看TEST.LOG内容看到test.log 结果如下:
17:20:08.42 START
17:20:08.42 END
但是如果我用手工方式直接双击此批处理文件运行看到test.log结果就不同了:
17:32:10.42 STARTSQL*Loader: Release 9.0.1.1.1 - Production on 星期五 4月 21 17:32:10 2006(c) Copyright 2001 Oracle Corporation. All rights reserved.达到提交点,逻辑记录计数17
17:32:13.26 END
数据库服务器是unix的.
web服务器是window2000server版的.
我现在就是通过web服务器调用sqlldr将数据导入到数据库服务器中.
OLDBATFILE>RUN.LOG
再删除原先BAT中的所有输出重定向,C#中调用新的BAT,执行后查看RUN.LOG的内容是什么。
>>很奇怪,你试试再建个BAT,新的BAT中只有一行内容
>>OLDBATFILE>RUN.LOG
>>再删除原先BAT中的所有输出重定向,C#中调用新的BAT,执行后查看RUN.LOG的内容是什么。是不是把bat改一下?
改成: sqlldr ...............>run.log
再看看run.log内容?
明天上班我试试看。我估计可能也差不多,每次通过c#调用bat时,sqlldr就是不运行。但手工又可以。奇怪。后来我到其它有Oracle数据库的机子上运行时,发现又可以。
但是在只安装了Oracle客户端的机子都只能通过手工执行BAT sqlldr才会运行!
会不会是这样?
@echo off
echo %TIME% START
c:\oracle90\bin\SQLLDR user/pwd@DataSvice control=XXXXX.ctl
echo %TIME% END
B.BAT的内容是
CALL A.BAT>RUN.LOG
然后C#调用B.BAT,执行完看RUN.LOG。