oracle 的 sqlldr 导入数据时 , 1. 在java 中 调用 Runtime.getRuntime().exec(sqlLoadSQL); 时 为什么不能立即入库。要停调tomcat 服务后 才能全部入库??并且 日志文件中才生成数据?? 是不是sqlldr 有什么参数控制啊?? 1. 如果 执行 Runtime.getRuntime().exec(sqlLoadSQL) 后 ; 由于某些错误,不能全部入库 只有几百条数据入库; 这时我想回滚 ,该怎么做,, 也就是事务 处理。
急丫 。。
急丫 。。
使用方法:
truncate table table_name;
操作特性:
truncate 只删除表中的所有数据,不删除表的结构;
truncate 是ddl操作立即生效,原数据不放到rollback segment中,不能回滚.,操作不触发trigger.;
truncate 语句缺省情况下将空间释放到 minextents个 extent,除非使用reuse storage;
truncate 会将高水线复位(回到最开始)
我 插入 240000 条 64 :错误情况下是 插入 64条 。。
在运行正常的情况下: 运行Runtime.getRuntime().exec(sqlLoadSQL) 只插入836 条 不知道为什么 总是这个 数字 ;我是 这样认为的:1.sqlload 是不是有参数 或缓存 控制。
2.插入 是 dml 语句 应该commit 才能提交吧!不解 ??
如果每次都是只插入836 条,应该是你的数据格式不正确,看看log文件中的提示(默认与数据文件同一个目录,与ctl文件同名,只是后缀由ctl换成log),里面会有详细的出错说明。
1)今天 我也遇到这样的问题: 执行在 sqlldr语句后面 加上direct=true 即可 Process process = r.exec("sqlldr userid=customer/soshare@customer control=bigdata.ctl data=bigdata.csv direct=true ");
[经过测试:用时间为: 00: 00: 30.06]
2)还有跟快的
Process process = r.exec("sqlldr userid=customer/soshare@customer control=bigdata.ctl data=bigdata.csv direct=true streamsize=10485760");
[经过测试:用时间为: 00: 00: 28.19]