+ -
当前位置:首页 → 问答吧 → 有关于批量增加数据库数据的SQL语句,麻烦大牛们给点快速的SQL语句

有关于批量增加数据库数据的SQL语句,麻烦大牛们给点快速的SQL语句

时间:2011-11-08

来源:互联网

数据库 :oracle  

 表名: app_user

 字段:ID NAME LOGINNAME PASSWORD DWNM

 要求:ID:按顺序增加  
   
  NAME LOGINNAME PASSWORD 这个三个字段按顺序增加相同数据

  DWNM 所有数据保持一致


 例如: 增200 或 20000条 等~ 要求语句要快点

作者: nieryy2009   发布时间: 2011-11-08

SQL code
select rownum,rownum+1,rownum+1,rownum+1,1 from dual connect by leve<100

作者: cosio   发布时间: 2011-11-08

用批量绑定forall是最快的
SQL code
/* Formatted on 2011/11/08 17:23 (Formatter Plus v4.8.8) */
DECLARE
   TYPE id_table IS TABLE OF app_user.ID%TYPE;
   t_id          id_table             := id_table ();
   TYPE name_table IS TABLE OF app_user.NAME%TYPE;
   t_name        name_table           := name_table ();
   TYPE loginname_table IS TABLE OF app_user.loginname%TYPE;
   t_loginname   loginname_table      := loginname_table ();
   TYPE password_table IS TABLE OF app_user.PASSWORD%TYPE;
   t_password    password_table       := password_table ();
   v_dwnm        app_user.dwnm%TYPE;
BEGIN
   v_dwnm := 'DWNM';

   FOR i IN 1 .. 2000--2000条,可以随便改
   LOOP
      t_id.EXTEND;
      t_id (t_id.COUNT) := i;
      t_name.EXTEND;
      t_name (t_name.COUNT) := 'Name' || i;
      t_loginname.EXTEND;
      t_loginname (t_loginname.COUNT) := 'Login' || i;
      t_password.EXTEND;
      t_password (t_password.COUNT) := 'Password' || i;
   END LOOP;

   FORALL ind IN t_id.FIRST .. t_id.LAST
      INSERT INTO app_user
                  (ID, NAME, loginname,
                   PASSWORD, dwnm
                  )
           VALUES (t_id (ind), t_name (ind), t_loginname (ind),
                   t_password (ind), v_dwnm
                  );
   COMMIT;
END;

作者: tx2730   发布时间: 2011-11-08

引用 2 楼 tx2730 的回复:
用批量绑定forall是最快的
SQL code
/* Formatted on 2011/11/08 17:23 (Formatter Plus v4.8.8) */
DECLARE
TYPE id_table IS TABLE OF app_user.ID%TYPE;
t_id id_table := id_table ();
……


 2730! 我用PL/SQL 运行语句时,提示:

  ORA-00001 违反唯一约束条件(ZHKWUSER.SYS_C009120)
  ORA-06512 在line27


  肿么回事?


 

作者: nieryy2009   发布时间: 2011-11-08

估计是表中本来就有数据,或者你执行这段SQL一次以上.

作者: tx2730   发布时间: 2011-11-08