问题是这样的:
Oracle服务器装在局域网内的某台电脑上:比如192.168.0.100;自己的机子ip(装有客户端)是192.168.0.33;
在java程序中我想读取某一个表(比如muser)的所有数据作为备份。下面是一些参数:
服务器id:gzxx
服务器ip:192.168.0.100
服务器port:1521
表名:muser如何用java的RunTime类的exec函数,执行sql plus命令将muser表数据导出c:\test.txt文件中,字段间以“,”间隔,每条记录为一行。。万分感谢!!!
Oracle服务器装在局域网内的某台电脑上:比如192.168.0.100;自己的机子ip(装有客户端)是192.168.0.33;
在java程序中我想读取某一个表(比如muser)的所有数据作为备份。下面是一些参数:
服务器id:gzxx
服务器ip:192.168.0.100
服务器port:1521
表名:muser如何用java的RunTime类的exec函数,执行sql plus命令将muser表数据导出c:\test.txt文件中,字段间以“,”间隔,每条记录为一行。。万分感谢!!!
try {
Runtime r = Runtime.getRuntime();
Process p = r.exec("cmd.exe /c"+"start /min d:\\a.bat");
} catch (IOException e) {
e.printStackTrace();
}
}}
直接使用一条exp就可以了。
另外,如果仅限于单表的数据导出,exp是可以有过滤条件的。
这一点,可不能乱说。
谢谢你们的热情回答!
我想还想问一下doer_ljy(可战):
我做的是一个数据库监控程序,一个为办公区,另一个为后台区,两者都有各自的Oracle数据库。我的程序是先在后台区,查找某个时段(比如一天)的数据,把数据个数发送给办公区,然后办公区的服务端接受到消息,它也查找同一时段的数据量,如果发现两者不同,那么发送消息给后台区。后台区变把这个时段的所有数据取出来,发送给办公区,从而实现两者的数据同步。(传输过程是TCP)
问题是:
我准备用sql plus的spool把数据取出来,但是用sql loader的replace把数据导进去的时候总有问题。把原来的数据都删除了,但是新数据也没有导进去。感觉plus和loader总是不能完美的运行。如果用exp能否实现我所说的功能?
SQL*Loader: Release 9.2.0.1.0 - Production on 星期四 2月 1 16:16:47 2007Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.控制文件: back.ctl
数据文件: C:\\testMUser.txt
错误文件: testMUser.bad
废弃文件: 未作指定
:
(可废弃所有记录)加载数: ALL
跳过数: 0
允许的错误: 50
绑定数组: 64 行,最大 256000 字节
继续: 未作指定
所用路径: 常规表MUSER
已加载从每个逻辑记录
插入选项对此表REPLACE生效 列名 位置 长度 中止 包装数据类型
------------------------------ ---------- ----- ---- ---- ---------------------
MUSER_ID FIRST * , CHARACTER
CREATED NEXT * , CHARACTER
ISACTIVE NEXT * , CHARACTER
NAME NEXT * , CHARACTER
BUREAU_ID NEXT * , CHARACTER
ORG_ID NEXT * , CHARACTER
PASSWORD NEXT * , CHARACTER
EMAIL NEXT * , CHARACTER
TITLE NEXT * , CHARACTER 记录 1: 被拒绝 - 表 MUSER 的列 ISACTIVE 出现错误。
在逻辑记录结束之前未找到列(使用 TRAILING NULLCOLS)
记录 2: 被拒绝 - 表 MUSER 的列 CREATED 出现错误。
在逻辑记录结束之前未找到列(使用 TRAILING NULLCOLS)
记录 3: 被拒绝 - 表 MUSER 的列 CREATED 出现错误。
exp的话,语法大概是 exp userid/passwd@连接名 .... tables=tablename query='where 条件部分'
倒入的话,使用imp倒入即可。不过我倒不推荐使用这种方法。
如果sqlloader不行,可以考虑使用pro*c把格式好的数据倒入到DB中。
大概的思路:
使用plsql生成一个自定义格式的文件比如说.csv(逗号分割)
使用pro*c读取生成生的.csv文件,把数据insert到数据库中。