将表 A(有5个字段)  导入B表(6个字段)  其中 A表中有一个字段(a)  是由B表中的两个字段(c,d) 组合成的. 也就是说a字段可以拆成c,d其他字段的数据一一对应.还有就是B表没有主键. ID可以重复.  

解决方案 »

  1.   

    问题的关键在于那个组合字段如何拆分,如果规则很清楚,单独用SQL 语句就能完成!当然,你用JAVA调用那个语句也可以,不过.. 没必要吧!
      

  2.   

    路过,顶一个~
      个人意见:用循环+六个变量。来操作(先取值,然后用SQL插入)。我做过可以。但是速度和性能不是很好!             呵呵,关公面前耍小刀!  呵呵~
      

  3.   

    其中a 是 (Monday)*2312-112312,(Tuesday)*2312-112312
    现在要拆为 c  对应Monday,Tuesday
              d  对应 2312-112312,2312-112312
      

  4.   

    你是要现在整理数据,以后不用做这个导入操作了,还是说在以后每次向a插入数据都要插到b,如果只是这一次导入的话,就写sql搞定,要是每次插入a都要同时去插入b表,就可以在java程序里处理,或者在数据库写个触发器,新增或删除a时顺便向b做操作
      

  5.   

    直接写个小的java应用,一直读取A表,然后读取A表的同时把A表的数据插入到B表去就行了,虽然效率不是很高,但简单
      

  6.   

    回8楼,  我的需求就是  每次插入a都要同时去插入b表    
                       A表做什么操作 B表也要做同样的操作.
          再弱弱问一下,  主要是B表字段跟A表字段数量不等.要进行个拆分操作  该怎么搞这个触发器呢. 
      

  7.   

    CREATE TRIGGER trg_ins_A AFTER INSERT ON AFOR EACH ROW 
    BEGIN 
    insert into  B(c,d,....) values(截取1(NEW.a列),截取2(NEW.a列)........); 
    END
      

  8.   

    我想了个办法       就是       当对A表进行增删改查的时候同时对B表也进行同样的操作. 支持你的做法,系统负荷分散,很好2 我建议你在B里面只保存c,d 已经A表的主键作为外键就行了,这样做一个视图就可以拿到完整的B表了!
      

  9.   

    insert into b select ... from a;
      

  10.   

    java2000_net   我那样写  觉的数据更新实时 也是最快的吧. B表不能改了.因为这张表也是另一个项目组一起使用的.
                   比较郁闷.
      我当时建议 写成一张表   就没这个麻烦了.  再写个没有实际意义的主键     不听. 比较郁闷.
      

  11.   

    12 楼我还想问一个问题.  一个触发器 只能触发一个操作(insert or delete or update ),还是可以写多个操作.
      

  12.   

    再建个删除的触发器,CREATE   TRIGGER   trg_del_A   AFTER   DELETE   ON   A...    不过b表没有唯一标识的列....
      

  13.   

    恩,对头,我也赞成用触发器,那样子简单很多,你要拆分a表的两个字段,可以添加一个标志到a变的那列的数据中,遇到那个标志就一个substr。
      

  14.   

    insert into b select * from a
    2表具有相同的字段,复制a表的内容去b表中
      

  15.   

    LS  别不懂装懂.  什么是大问题?  BS!
      

  16.   

    触发器 没办法截取.
        a字段 里面一条的内容就很多:  (Monday)*05:12-11:23,(Tuesday)*10:12-11:23,(Monday)*05:12-11:23,(Tuesday)*10:12-11:23
            所以用截取好象不太可行
      

  17.   

    如果截取的过程比较复杂,可以在数据库自定义函数截取1(),截取2(),
    然后再
    CREATE   TRIGGER   trg_ins_A   AFTER   INSERT   ON   A FOR   EACH   ROW   
    BEGIN   
    insert   into     B(c,d,....)   values(截取1(NEW.a列),截取2(NEW.a列)........);   
    END 在数据库写个函数把(Monday)*05:12-11:23,(Tuesday)*10:12-11:23,(Monday)*05:12-11:23,(Tuesday)*10:12-11:23 
    截取成想要的结果应该可以实现吧
      

  18.   

    Johnson_Hong 
    疯狂的小猪
              你有这方面资料吗, 那触发器里面怎么写处理字段函数呢?     我越问问题越多. 我对数据库这块  用的很少.所以很多不会.
         能给传些资料吗?  我油箱  [email protected]  谢谢拉!
      

  19.   

    截取我知道用 substring  
      

  20.   

    你可以在网上搜索一下mysql字符串函数,有很多的
      

  21.   

    a= (Monday)*2312-112312,(Tuesday)*2312-112312 
    c= Monday,Tuesday 
    d= 2312-112312,2312-112312我提供java的代码,你自己替换为SQL语句
        String s = "(Monday)*2312-112312,(Tuesday)*2312-1123123";
        System.out.println(s.substring(0,s.indexOf("*"))+","+s.substring(s.indexOf(",")+1,s.indexOf("*",s.indexOf(",")+1)));
        
        System.out.println(s.substring(s.indexOf("*")+1,s.indexOf(","))+","+s.substring(s.indexOf("*",s.indexOf(","))+1));
        
    str.indexOf(s) ==> inSTR(str,s)
    str.substring(from,to) = substring(field,from,to);我MySQL 的SQl不熟,你自己调整吧
      

  22.   

    欢迎JAVA人士加入53633581群,大家在这里可以讨论技术问题!
      

  23.   

    直接写SQL语句简单多了
    弄什么java啊
      

  24.   

    如果是同一个库的话,还是用SQL语句处理好一些.
      

  25.   

    我还是采用了  用SQL语句去处理了.   触发器想用 但是不会用.     结贴  !!!!!!!!  感谢热心的朋友们帮忙