根据excel表中的数据,数据库表assetcontent中没有的记录要进行添加,有的就不需要管,大概要加的有300来条,求sql语句

解决方案 »

  1.   

    可以换个思路。
    先在数据库中建立一个与目标表(假设为A)结构一样的表B。然后使用PL/SQL将excel中的数据一次性导入到表B中。然后对A, B表进行Merge操作。
    可以参考下在的Merge语句来编写你的Merge语句CREATE TABLE T124
    (
        ID NUMBER(4),
        F1 VARCHAR2(20),
        F2 VARCHAR2(20)
    );
    INSERT INTO T124 VALUES(1, 'A', 'AA');
    INSERT INTO T124 VALUES(2, 'B', 'BB');
    INSERT INTO T124 VALUES(3, 'C', 'CC');MERGE INTO T124 t1
    USING T125 t2
    ON (t1.ID = t2.ID)
    WHEN MATCHED THEN
        UPDATE SET t1.F1 = t2.F2,
                   t1.F2 = t2.F2
    WHEN NOT MATCHED THEN
        INSERT VALUES(t2.ID, t2.F1, t2.F2)
      

  2.   

    根据你EXECL的数据,在你的数据创建个临时表,然后用这个临时表跟你的assetcontent关联进行插入就可以了~
      

  3.   

    弱弱的问两句:怎样将excel的数据导入到plsql的临时表呢,它们怎么关联。它们的sql语句是什么啊
      

  4.   

    PL/SQL有导入工具,或者用最土的方法直接把EXECL里面的数据直接复制粘贴到表里面!~
      

  5.   

    外部表的使用:
    C:\Windows\System32>rd F:\oetdir
    C:\Windows\System32>mkdir F:\oetdir
    SQL> create directory testoetdir as 'F:\oetdir';
    SQL> grant read on directory testoetdir to user_name;
    SQL> grant write on directory testoetdir to user_name;
    SQL> edit oet01.sql
    写入如下内容:
    create table OET01
    (
      c1 VARCHAR2(30),
      c2 NUMBER(8),
      .....
    )
    organization external
    (
      type ORACLE_LOADER
      default directory TESTOETDIR
      access parameters 
      (
        records delimited by newline
        fields terminated by ' '
      )
      location (TESTOETDIR:'oet01.txt')
    );
    SQL> @oet01.sqlSQL> select * from oet01;
    .....
    .....
    .....