用insert into test(a,b,c) select a,b,c from emp;
插入大数据时,如果出错,怎么样知道具体那一行出的
解决方案 »
- 我安装了一个mysql,打不开客户端
- oracle 失效对象自动重新编译
- oracle 动态这行sql 语句 问题
- 如何用JAVA编写这样的ORACLE存储过程
- ORACLE 行转换成列 存储过程 怎么用
- 求关于oracle存储过程的文档!
- 在调用oci中的OCIStmtExecute出现ORA-24324:service handle not initlize
- 请问如何在PL/SQL中的COMMAND WINDOW输出字符串
- 如何在存储过程中处理 in(输入) 类型的记录集数据
- Oracle8.1.7安装 求助高手!!
- 在eclipse中做个插入语句,插入到oracle中,其中一个列是Date类型,在eclipse中传什么样的值能添加进去?
- 求助关于审计的用法!!
具体怎么写,我还是不太明白
insert into test(a,b,c) select a,b,c from emp;
能批量提交吗
SQL> create table t_test(id number(10) not null,name varchar2(20) not null);Table createdSQL> select * from t_test; ID NAME
----------- --------------------SQL>--创建错误日志记录表
SQL> create table error_logs(id number(10) not null,
2 log_timestamp timestamp not null,
3 error_message varchar2(2000),
4 constraint error_logs_pk primary key(id))
5 ;Table created--创建一个自增序列
SQL> create sequence log_seq start with 1 increment by 1;Sequence created
--定义一个自治事务的存储过程来记录错误信息
SQL> create or replace procedure p_log_errors(error_message in varchar2)
2 as
3 pragma autonomous_transaction; --自治事务
4 begin
5 --往错误日志记录表,插入错误信息
6 insert into error_logs values(log_seq.nextval,systimestamp,error_message);
7 commit;
8 end;
9 /Procedure created--执行一段PL/SQL,强制产生一个错误,被捕获且记录到日志
SQL> begin
2 insert into t_test values(111,'test111');
3 insert into t_test values(222,null); --force insert
4 exception
5 when others then
6 p_log_errors(error_message => sqlerrm); --调用自治过程,往错误日志中记录错误信息
7 rollback; --回滚事务
8 end;
9 /PL/SQL procedure successfully completed--查看测试表(无数据插入,因为有异常,事务回滚。)
SQL> select * from t_test; ID NAME
----------- ----------------------查看错误日志记录表(有错误日志记录!)
SQL> select * from error_logs; ID LOG_TIMESTAMP ERROR_MESSAGE
------- --------------------------------------------- ------------------------------------------------------
1 15-1月 -10 09.11.57.897000 上午 ORA-01400: 无法将 NULL 插入 ("SYS"."T_TEST"."NAME")SQL>
EXCEPTION
WHEN OTHERS
THEN
v_errcode := SQLCODE;
v_errmsg := SQLERRM;
ROLLBACK;
o_ret := 1;
p_wf_writeerrlog (
v_errcode,
v_errmsg
);
第3行和第4行之间是不是应该有commit啊
很感谢您的指点 又学习了但我想知道具体是哪一行出的错,以防出错后可以从出错的地方接着导入
以insert into test(a,b,c) select a,b,c from emp;
这种方式导入数据是不是没有办法获取到具体哪一行?
大家给推荐一种可行的方式 我的数据有几千万条