将select Query中的ResultSet插入另一个数据库

时间:2014-03-13 15:43:12

标签: java mysql teradata

我想从teradata数据库中选择所有值并将其插入到mysql数据库中。我正在考虑将此作为一个java脚本,因为这是我最熟悉的。

我能够得到如下数据:

// connect to the teradata table and get all the data
Class.forName("com.teradata.jdbc.TeraDriver");
Connection teraConnect = DriverManager.getConnection(url,username, password);
Statement teraStatement= teraConnect.createStatement();
String query = "select * from mytable";
ResultSet teraResult = teraStatement.executeQuery(query);

现在我想把所有内容都放到我的mysql数据库中。该表已存在且具有相同的模式(相同的列名和类型)。

我如何插入mysql数据库。这就是我所拥有的:

// connect to the mysqltable
Class.forName("com.mysql.jdbc.Driver");
Connection sqlConnect = DriverManager.getConnection(mysqlUrl,username, password);
Statement mysqlStatement= sqlConnect.createStatement();
//??? now what? how to convert a resultset to a query that i can execute

我计划通过一夜之间的工作来做到这一点。

注意:我无法控制teradata数据库服务器,因为IT人员控制它。

注意:这两个数据库不在同一台机器上(如果这样做了差异)。

1 个答案:

答案 0 :(得分:1)

您需要通过结果集进行迭代,将每行的每个数据放入数组中,然后通过数组迭代以发送插入请求。

示例:

st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE);
ResultSet res= st.executeQuery(sqlQuery);
res.next();
while (!res.isAfterLast()) {                
    data1[i] = res.getInt(1);
    data2[i] = res.getString(2);
    res.next();
    i++;
}

//Insert into DB
Connection sqlCon = DriverManager.getConnection(url, usr, pwd)
stSql = connection.createStatement();
for (i=0; i<size; i++){
sqlQuery = "INSERT INTO table (col1, col2) VALUES ("+Data1[i]+", "+Data2[i]+")";
st.executeQuery(sql);
}