源数据库不同,表名相同,表字段名称相同,数据类型可能不同(因为目的数据库为mysql);
现在要取不同数据库中的数据插入到mysql数据库中 java 程序改怎么写,字段与字段之间的映射改怎么做?

解决方案 »

  1.   

    数据库量很多吗?
    不多的话就用JDBC实现直接导吧
      

  2.   

    看情况.
    如果只是迁移数据:导成csv.
    如果是程序里要实现一个功能:那要看你原来的程序怎么写的了.理论上来说"数据类型可能不同"这对java来说不是问题,jdbc都是对java对象进行操作的和数据库没关系.如果用的是hibernate就更简单了,新建一个映射文件,再弄一个sessionFactory就可以了
      

  3.   

    别告诉我你程序里没有domain对象.咱们假设你什么开源框架都没用弄个数据库处理接口应付那些通用操作public interface Database {
    public void save(List<String> names,List<String>values,PreparedStatement pre)throws Exception;
    public String getInsertSqlByName(String name);
    //public void del()...
    }针对不同数据库写一份实现oraclepublic class OracleDatabse implements Database{
    /**
     * @param fileName
     *            配置文件
     */

    public OracleDatabse(String fileName) {

    } public void save(List<String> names, List<String> values,PreparedStatement pre) throws Exception {
    for(int i=0;i<names.size();i++){
    String name=names.get(i);
    if(name.equals("姓名")){
    pre.setString(1, values.get(1));
    continue;
    }
    if(name.equals("年龄")){
    pre.setInt(2, Integer.parseInt(values.get(2)));
    continue;
    }
    if(name.equals("生日")){
    Date date=null;//自己将value传为日期
    pre.setDate(3,date);
    }
    }

    } public String getInsertSqlByName(String name) {
    if(name.equals("员工")){
    return "insert into user values(?,?,?)";
    }
    return null;

    }

    }mysql
    public class MySqlDatabase implements Database { public MySqlDatabase(String fileName){}

    public void save(List<String> names, List<String> values, PreparedStatement pre) throws Exception {
    // TODO Auto-generated method stub } public String getInsertSqlByName(String name) {
    // TODO Auto-generated method stub
    return null;
    }
    }
    通过工厂获得数据库操作对象
    public class DatabaseFactory {
    public static Database getDataBase(String type){
    if(type.equals("oracle")){
    return  new OracleDatabse("oracle的配置文件");
    }
    if(type.equals("MySql")){
    return  new MySqlDatabase("mySql的配置文件");
    }
    return null;
    }

    public static void main(String[] args) throws Exception {
    Database database=DatabaseFactory.getDataBase("oracle");
    Connection con=null;
    //插入用户
    List names=new ArrayList();
    List values=new ArrayList();
    String insertSql=database.getInsertSqlByName("员工");
    PreparedStatement pre=con.prepareStatement(insertSql);
    database.save(names, values, pre);
    //更新...
    //删除...

    }
    }