首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 关于通过JAVA 将数据库的表的数据导入另一张表中 [已结帖,结帖人:xql80329]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xql80329
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-01-31 10:59:44 楼主
    将表 A(有5个字段)  导入B表(6个字段)

      其中 A表中有一个字段(a)  是由B表中的两个字段(c,d) 组合成的. 也就是说a字段可以拆成c,d

    其他字段的数据一一对应.还有就是B表没有主键. ID可以重复. 
    200  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • java2000_net
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      2

    发表于:2008-01-31 11:02:501楼 得分:80
    问题的关键在于那个组合字段如何拆分,如果规则很清楚,单独用SQL 语句就能完成!

    当然,你用JAVA调用那个语句也可以,不过.. 没必要吧!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xql80329
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 11:03:232楼 得分:0
    我想了个办法  就是  当对A表进行增删改查的时候同时对B表也进行同样的操作.
    感觉这个方法有点笨.
    不知道哪为高手 有更好的办法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • luoping198408
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 11:06:493楼 得分:0
    路过,顶一个~
      个人意见:用循环+六个变量。来操作(先取值,然后用SQL插入)。我做过可以。但是速度和性能不是很好!            呵呵,关公面前耍小刀!  呵呵~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xql80329
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 11:13:584楼 得分:0
    其中a 是 (Monday)*2312-112312,(Tuesday)*2312-112312
    现在要拆为 c  对应Monday,Tuesday
              d  对应 2312-112312,2312-112312
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • farandfaraway
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 11:16:055楼 得分:10
    感觉这种数据库内部的数据交互,如果不需要外部加工,用存储过程解决比较好,快还好维护
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xql80329
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 11:18:426楼 得分:0
    ls 哥们 能给讲的细点吗? 我对存储过程 了解不多.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xql80329
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 11:23:447楼 得分:0
    自己的贴顶起去!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Johnson_Hong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 11:35:578楼 得分:65
    你是要现在整理数据,以后不用做这个导入操作了,还是说在以后每次向a插入数据都要插到b,如果只是这一次导入的话,就写sql搞定,要是每次插入a都要同时去插入b表,就可以在java程序里处理,或者在数据库写个触发器,新增或删除a时顺便向b做操作
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zdblzwj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 11:37:199楼 得分:10
    直接写个小的java应用,一直读取A表,然后读取A表的同时把A表的数据插入到B表去就行了,虽然效率不是很高,但简单
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xql80329
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 11:42:3710楼 得分:0
    回8楼,  我的需求就是  每次插入a都要同时去插入b表   
                      A表做什么操作 B表也要做同样的操作.
          再弱弱问一下,  主要是B表字段跟A表字段数量不等.要进行个拆分操作  该怎么搞这个触发器呢.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xql80329
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 11:44:0911楼 得分:0
    我数据库是 MYSQL
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Johnson_Hong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 12:09:0212楼 得分:0
    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
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • java2000_net
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      2

    发表于:2008-01-31 12:20:3913楼 得分:0
    我想了个办法      就是      当对A表进行增删改查的时候同时对B表也进行同样的操作.

    支持你的做法,系统负荷分散,很好

    2 我建议你在B里面只保存c,d 已经A表的主键作为外键就行了,这样做一个视图就可以拿到完整的B表了!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shan1119
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 13:07:1514楼 得分:10
    insert into b select ... from a;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shan1119
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 13:08:3415楼 得分:10
    如果两个表中的数据要一一对应的话,插入前把b表数据先删除.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xql80329
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 14:00:2216楼 得分:0
    java2000_net  我那样写  觉的数据更新实时 也是最快的吧. B表不能改了.因为这张表也是另一个项目组一起使用的.
                  比较郁闷.
      我当时建议 写成一张表  就没这个麻烦了.  再写个没有实际意义的主键    不听. 比较郁闷.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xql80329
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 14:02:3617楼 得分:0
    12 楼我还想问一个问题.  一个触发器 只能触发一个操作(insert or delete or update ),还是可以写多个操作.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xql80329
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 14:03:1718楼 得分:0
    因为我不仅要插入 还要进行 删除 修改操作
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Johnson_Hong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 14:10:3419楼 得分:0
    再建个删除的触发器,CREATE  TRIGGER  trg_del_A  AFTER  DELETE  ON  A...    不过b表没有唯一标识的列....
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sugar712
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 14:41:1720楼 得分:0
    恩,对头,我也赞成用触发器,那样子简单很多,你要拆分a表的两个字段,可以添加一个标志到a变的那列的数据中,遇到那个标志就一个substr。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jjtking
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 16:16:5621楼 得分:0
    可以写个小程序,非常简单。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xql80329
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 16:29:0122楼 得分:0
    什么简单的方法?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xql80329
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 16:47:1323楼 得分:0
    D
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Teddyyxq
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 22:38:1724楼 得分:5
    insert into b select * from a
    2表具有相同的字段,复制a表的内容去b表中
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cd_tiger
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-01-31 23:33:4325楼 得分:0
    这种小问题,也要讨论半天?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xql80329
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-01 08:52:3826楼 得分:0
    LS  别不懂装懂.  什么是大问题?  BS!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xql80329
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-01 09:32:0127楼 得分:0
    触发器 没办法截取.
        a字段 里面一条的内容就很多:  (Monday)*05:12-11:23,(Tuesday)*10:12-11:23,(Monday)*05:12-11:23,(Tuesday)*10:12-11:23
            所以用截取好象不太可行
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Johnson_Hong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-01 10:10:1928楼 得分:0
    如果截取的过程比较复杂,可以在数据库自定义函数截取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
    截取成想要的结果应该可以实现吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xql80329
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-01 11:06:2629楼 得分:0
    Johnson_Hong
    疯狂的小猪
              你有这方面资料吗, 那触发器里面怎么写处理字段函数呢?    我越问问题越多. 我对数据库这块  用的很少.所以很多不会.
        能给传些资料吗?  我油箱  xingqingliang@dhcc.com.cn  谢谢拉!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xql80329
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-01 11:08:2530楼 得分:0
    截取我知道用 substring 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Johnson_Hong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-01 11:37:5631楼 得分:0
    你可以在网上搜索一下mysql字符串函数,有很多的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • java2000_net
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      2

    发表于:2008-02-01 13:33:1232楼 得分:0
    a= (Monday)*2312-112312,(Tuesday)*2312-112312
    c= Monday,Tuesday
    d= 2312-112312,2312-112312

    我提供java的代码,你自己替换为SQL语句
    Java code
    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));

    SQL code
    str.indexOf(s) ==> inSTR(str,s) str.substring(from,to) = substring(field,from,to);


    我MySQL 的SQl不熟,你自己调整吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hcy1985
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-01 13:40:1033楼 得分:0
    欢迎JAVA人士加入53633581群,大家在这里可以讨论技术问题!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rabbitbug
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-01 13:59:1034楼 得分:5
    直接写SQL语句简单多了
    弄什么java啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ymcano11
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-01 14:18:2835楼 得分:5
    如果是同一个库的话,还是用SQL语句处理好一些.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xql80329
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-01 15:59:5336楼 得分:0
    我还是采用了  用SQL语句去处理了.  触发器想用 但是不会用.    结贴  !!!!!!!!  感谢热心的朋友们帮忙
    修改 删除 举报 引用 回复